Matlab:strcmp的输入参数太多



我有一个数据结构,我正在尝试替换其中的一个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;

相关内容

  • 没有找到相关文章