string型16進数データを10進数に変換
2 views (last 30 days)
Show older comments
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進数に変換するにはどうしたら良いでしょうか?
0 Comments
Answers (1)
凌 大井川
on 30 Mar 2021
1 Comment
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);
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!