Dynamic Structure Fieldnames using Genvarname() Invalid

4 visualizzazioni (ultimi 30 giorni)
The help for genvarname() specifically says "If you use genvarname to generate a field name for a structure, MATLAB does create a variable for the structure and field in the MATLAB workspace. See Example 3, below."
The following code results in the following error at the first instance of genvarname(): "??? Argument to dynamic structure reference must evaluate to a valid field name."
count = 0;
while(true)
count = count + 1;
datafolder{count} = uigetdir(cd,...
'Select the folder containing first test event:');
if(~datafolder{count})
datafolder(count) = [];
break;
end
testname{count} = inputdlg({'Name of this test event'},'Name Test Event');
if(isempty(testname{count}))
error('No name entered');
end
end
for test = 1:length(testname)
testevents.(genvarname(testname{test})) =...
processDataFolder(datafolder{test});
testevents.(genvarname(testname{test})) =...
analyzeData(testevents.(testname{test}));
plotData(...
testevents.(genvarname(testname{test})),...
testname{test});
plotAverages(...
testevents.(genvarname(testname{test})),...
testname{test});
end
Very confused. 'Test120112' was used as the input.

Risposta accettata

per isakson
per isakson il 13 Gen 2012
The variable, testname, is a cell array of cells. Your code assumes it to be a cell array of strings
K>> class( testname{1} )
ans =
cell

Più risposte (1)

Eric
Eric il 13 Gen 2012
For those interested, as the answer I accepted didn't explicity give the change, it was a one-line error (attributable to 9 straight hours buried in this project):
testname{count} = inputdlg({'Name of this test event'},'Name Test Event');
becomes
testname(count) = inputdlg({'Name of this test event'},'Name Test Event');
Forcing testname to become a cell array of strings, instead of a cell array of cells.
This is why I avoid cells like the plague and just use structs.

Categorie

Scopri di più su Structures in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by