我有一个数据结构,我试图替换其中的一个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,如果它重要的话。
1条答案
按热度按时间l7mqbcuq1#
当你单独执行LHS时,它使用
subsref
方法,这个方法显然可以处理多级索引,但是,看起来subsasgn
类的赋值方法并不是为处理多级索引而设计的。你要么修复
Dictionary/subsasgn
,要么把LHS拆分出来,这样你只需要对Dictionary
做一个简单的赋值。假设
raw(1,1).stimulus
属于有问题的Dictionary
类别,您需要确保在单一层级的索引指派中使用。换句话说: