需要详细解释"在赋值A(I)= B中,B和I中的元素数必须相同"

nsy*_*nsy 2 matlab

到目前为止,我没有任何想法来理解这个错误的意思.如果我有,我想我可以在我的matlab编程中解决这个问题.

如果有人能帮我解释发生了什么并举一些例子?

Rod*_*uis 8

如果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)