到目前为止,我没有任何想法来理解这个错误的意思.如果我有,我想我可以在我的matlab编程中解决这个问题.
如果有人能帮我解释发生了什么并举一些例子?
如果I是逻辑矩阵
I =
1 0 1 1 0
Run Code Online (Sandbox Code Playgroud)
并且A是一个相同大小的数组,
A =
5 3 8 1 2
Run Code Online (Sandbox Code Playgroud)
然后
>> A(I)
ans =
5 8 1
Run Code Online (Sandbox Code Playgroud)
即,I作为元素的掩码A.您也可以将此用于分配:
>> A(I) = 4
A =
4 3 4 4 2
Run Code Online (Sandbox Code Playgroud)
(标量分配),或
>> A(I) = [1 NaN 3]
A =
1 3 NaN 3 2
Run Code Online (Sandbox Code Playgroud)
(数组赋值).如果您尝试执行类似操作,则会收到错误
>> A(I) = [ 7 6 5 4 8 7 6 8 7 9 4 3 2]
Run Code Online (Sandbox Code Playgroud)
即,A(I)指的是不同于[7 6 5 4 8 7 6 8 7 9 4 3 2]包含的元素数量.这仅在使用标量或空值进行分配时有效
A(I) = [] %# valid
A(I) = 4 %# valid
A(I) = [1 2 3] %# valid, numel(A(I)) == numel([1 2 3])
A(I) = [1 2] %# NOT VALID, numel(A(I)) != numel([1 2])
Run Code Online (Sandbox Code Playgroud)