Effacer les filtres
Effacer les filtres

Dynamic Structure Fieldnames using Genvarname() Invalid

6 vues (au cours des 30 derniers jours)
Eric
Eric le 13 Jan 2012
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.

Réponse acceptée

per isakson
per isakson le 13 Jan 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

Plus de réponses (1)

Eric
Eric le 13 Jan 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.

Catégories

En savoir plus sur Data Types dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by