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

3 ビュー (過去 30 日間)
凌 大井川
凌 大井川 2021 年 3 月 30 日
コメント済み: Kojiro Saito 2021 年 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進数に変換するにはどうしたら良いでしょうか?

回答 (1 件)

凌 大井川
凌 大井川 2021 年 3 月 30 日
どうやらデータの最終行に、<missing>という要素が含まれた行があり、これが存在するせいで変換できなかったようです。
この行を削除することで正常に変換することができました。
  1 件のコメント
Kojiro Saito
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);

サインインしてコメントする。

カテゴリ

Help Center および File Exchangeデータ型の変換 についてさらに検索

Community Treasure Hunt

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

Start Hunting!