string型16進数データを10進数に変換
3 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
凌 大井川
2021 年 3 月 30 日
1 件のコメント
Kojiro Saito
2021 年 3 月 30 日
了解いたしました。
実際のファイルでは列数が多いとのことなので、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);
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!