我在回答这个问题时出现了这个问题。这应该是我正在做的一些愚蠢的错误,但我无法得到它是什么错误......</p>
myMatrix = [22 33; 44 55]
回报:
>> subsref(myMatrix, struct('type','()','subs',{{[1 2]}} ) );
ans =
22 44
与细胞一起使用时:
myCell = {2 3; 4 5}
回报:
>> subsref(myCell,struct('type','{}','subs',{{[1 2]}} ) );
ans =
2 % WHATTT?? Shouldn't this be 2 and 4 Matlab??
检查subsref
文档,我们看到:
查看 MATLAB 如何为表达式调用 subsref:
A{1:2} 语法 A{1:2} 调用 B = subsref(A,S),其中 S.type='{}' 和 S.subs={[1 2]}。
这似乎不是真的,因为 subsref 返回的值只是第一个参数,而不是所有参数。
然后,如果这样做:
>> [a,b]=subsref(myCell,struct('type','{}','subs',{{[1 2]}} ) )
a =
2
b =
4 % Surprise!
但这与将自动返回的 myCell{[2 4]} 不同:
>> myCell{[1 2]}
ans =
2
ans =
4
对于我使用 access 的每个索引,我都需要使用 subsref 和一个输出myCell
,或者我错过了什么?