我有一个数据结构,我正在尝试替换其中的一个char值。我正在使用以下代码:raw(1,1).stimulus.values{1,1}.name=order{1};
如果我单独运行它的任何一端,我会得到一个类char
的字符串作为回报。raw(1,1).stimulus.values{1,1}.name
退货:ans = 'stim_channel1'
order{1}
返回ans = 'visff'
但如果我运行整个程序,我会得到以下错误:
Error using strcmp
Too many input arguments.
Error in Dictionary/subsasgn (line 233)
if strcmp(s.type,'()')
但我正在尝试用另一个字符串替换一个字符串。为什么这么多争论?我做错了什么?谢谢Matlab R2021b,如果重要的话。
当您单独执行LHS时,它使用subsref
方法,该方法显然可以处理多级索引。然而,类subsasgn
的赋值方法似乎并不是为处理多级索引而设计的。
您需要修复Dictionary/subsasgn
,或者拆分LHS,以便只对Dictionary
进行简单的赋值。
考虑到raw(1,1).stimulus
属于有问题的Dictionary
类,您需要确保在单个级别上使用索引赋值。换句话说:
% Extract "values" from Dictionary
sv = raw(1,1).stimulus.values;
% Modify "values"
sv{1,1}.name = order{1};
% Put "values" back into Dictionary
raw(1,1).stimulus.values = sv;