string型16進数データを10進数に変換

2 views (last 30 days)
凌 大井川
凌 大井川 on 30 Mar 2021
Commented: Kojiro Saito on 30 Mar 2021
16進数が1byte毎にカンマ区切りとなっている計4byteの.txtデータを、
opts = detectImportOptions(filename);
opts.VariableTypes = {'string','string','string','string'};
data = readtable(filename,opts);
で読み込み、
data.Var1 = data.Var1 + data.Var2 + data.Var3 + data.Var4
dataVar2 = []
dataVar3 = []
dataVar4 = []
として、一つの列に結合した後、
data.Var1 = hex2dec(data.Var1)
で10進数に変換しようとすると、
string要素はサポートされていませんというエラーメッセージが出てしまいます。
hex2decのドキュメンテーションページを見ると、String 配列は使用可能な様に書いてありますが、どうして使用できないのでしょうか?
また、10進数に変換するにはどうしたら良いでしょうか?

Answers (1)

凌 大井川
凌 大井川 on 30 Mar 2021
どうやらデータの最終行に、<missing>という要素が含まれた行があり、これが存在するせいで変換できなかったようです。
この行を削除することで正常に変換することができました。
  1 Comment
Kojiro Saito
Kojiro Saito on 30 Mar 2021
了解いたしました。
実際のファイルでは列数が多いとのことなので、data.Var1 = data.Var1 + data.Var2 + data.Var3 + data.Var4やdata.Var2 = []などの部分が煩雑になりそうです。例えば、table2arrayで一旦tableから配列に変換して、joinで1行のstring配列にする方法もあります。
ご参考までに。
filename = 'test.txt';
opts = detectImportOptions(filename);
opts = setvartype(opts, 'string');
t = readtable(filename, opts);
strarray = table2array(t);
strarray = join(strarray, "");
D = hex2dec(strarray);

Sign in to comment.

Categories

Find more on データ型の変換 in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!