Import data as struct with fields instead of struct array (Var1, Var2...)?

13 ビュー (過去 30 日間)
Ulvi Sanal
Ulvi Sanal 2020 年 12 月 12 日
コメント済み: Ulvi Sanal 2020 年 12 月 12 日
I'm trying to import a .txt-table as a "struct with fields". For that, I use readtable() and table2struct. But MATLAB creates a struct array with the two columns Var1 and Var2. I don't want it like that but rather like in the last screenshot, which I took from a previous work of someone else. Here, the column "Field" contains the labels of the variables and column "Value" contains the corresponding values.
The difference is that the struct I create is a struct array, whereas the one from my template is just a "struct with fields".
Side note: Another problem is that the Value "test@google.com" is a NaN when I import it. Any idea how to correctly import the string?
Matlab2020b.

採用された回答

Ive J
Ive J 2020 年 12 月 12 日
編集済み: Ive J 2020 年 12 月 12 日
Method 1:
input = readcell('input.txt').'; % read as cell, NaN won't be an issue here
inputStruct = cell2struct(input(2:end, :), input(1,:), 2); % use first row as field names
Method 2 (if you still insist in using readtable):
input = readtable('input.txt', 'ReadRowNames', true); % if still getting NaN, try setting 'TextType' to 'string'
input = rows2vars(input); % rotate the table
input.(1) = []; % discard OriginalVariableNames
inputStruct = table2struct(input, 'ToScalar', true); % a scalar struct

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by