Matlab:strcmp的输入参数太多

i34xakig  于 2022-11-24  发布在  Matlab
关注(0)|答案(1)|浏览(229)

我有一个数据结构,我试图替换其中的一个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 R2021 b,如果它重要的话。

l7mqbcuq

l7mqbcuq1#

当你单独执行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;

相关问题