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

21 Ansichten (letzte 30 Tage)
凌 大井川
凌 大井川 am 30 Mär. 2021
Kommentiert: Kojiro Saito am 30 Mär. 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進数に変換するにはどうしたら良いでしょうか?

Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu データ型の変換 finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!