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

7 vues (au cours des 30 derniers jours)
Ulvi Sanal
Ulvi Sanal le 12 Déc 2020
Commenté : Ulvi Sanal le 12 Déc 2020
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.

Réponse acceptée

Ive J
Ive J le 12 Déc 2020
Modifié(e) : Ive J le 12 Déc 2020
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

Plus de réponses (0)

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by