Argument to dynamic structure reference must evaluate to a valid field name
cell, matlab, string
Solution
Matlab can give this sometimes misleading error message when you accidentally pass a cell array instead of a string. The following example gives the same error:
fields = {'foo', 'bar'}
s = struct('foo', 23, 'bar', pi)
for f = fields
disp(f)
s.(f) = 0
end
If this is your problem (test the actual type of your field name with e.g. `whos`), it should help to say `f = char(f)`.
Problem
I am getting this error "Argument to dynamic structure reference must evaluate to a valid field name." I have a struct called spectData and it looks like this ``` spectData{1} = data: [256x26 double] textdata: {1x26 cell} colheaders: {1x26 cell} Row: [256x1 double] Col: [256x1 double] Cho: [256x1 double] Cho0x25SD: [256x1 double] Cho0x2FCit: [256x1 double] PCho: [256x1 double] PCho0x25SD: [256x1 double] ``` I try and assign this in a function call the line of code looks like this. This is the line of code that matlab says the error is at. ``` SDdata = spectData{sliceNum - firstSlice}.(MetabMapSDString); ``` where metabString is a string of one of the names for example 'PCho0x25SD' spectData has 4 sub structs in total all like this one I displayed. What am I doing wrong?? It is a double so it should be ok I thought.