Borrar filtros
Borrar filtros

Dynamic Structure Fieldnames using Genvarname() Invalid

8 visualizaciones (últimos 30 días)
Eric
Eric el 13 de En. de 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.

Respuesta aceptada

per isakson
per isakson el 13 de En. de 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

Más respuestas (1)

Eric
Eric el 13 de En. de 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.

Categorías

Más información sobre Structures en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by