动态结构引用的参数必须求值为有效的字段名称

Ben*_*sen 4 string matlab cell

我收到此错误"动态结构引用的参数必须评估为有效的字段名称." 我有一个名为spectData的结构,它看起来像这样

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]
Run Code Online (Sandbox Code Playgroud)

我尝试在函数调用中分配这个代码行如下所示.这是matlab所说的错误所在的代码行.

 SDdata = spectData{sliceNum - firstSlice}.(MetabMapSDString);
Run Code Online (Sandbox Code Playgroud)

其中metabString是其中一个名称的字符串,例如"PCho0x25SD",spectData总共有4个子结构,就像我显示的那样.我究竟做错了什么??这是一个双倍,所以我认为应该没问题.

qua*_*gar 11

当你不小心传递一个单元格数组而不是一个字符串时,Matlab会给出这个有时会产生误导的错误信息.以下示例给出了相同的错误:

fields = {'foo', 'bar'}
s = struct('foo', 23, 'bar', pi)

for f = fields
  disp(f)
  s.(f) = 0
end
Run Code Online (Sandbox Code Playgroud)

如果这是你的问题(用例如测试你的字段名称的实际类型whos),应该有所帮助f = char(f).