有人可以解释为什么在例子A中结果是1x6向量(这是有意义的并且是我所期待的)而在例B中结果是1x4向量?
在示例B中,如果我将newvec的大小预定义为1x6向量,则结果是正确的1x6向量.只是不了解发生了什么.
例A
vec = [0 2 3 0 5 0] %1x6
newvec(vec == 0) = 1 %produces a 1 x 6 vector
Run Code Online (Sandbox Code Playgroud)
例B
vec = [0 2 3 0 5 3] %1 x 6
newvec(vec == 0) = 1 %produces a 1 x 4 vector
Run Code Online (Sandbox Code Playgroud)
编辑: 感谢丹指出错误。
vec == 0产生一个逻辑矩阵。现在,如果未定义 newvec 的大小 ,则将newvec(vec==0) =1始终创建一个新的行向量newvec。
以下步骤将决定其大小newvec
temp1 = logical_matrix(:);
trailing_zeros = number of zeros after the occurrence of last `true` value in temp1
size(newvec) = [1, numel(logical_matrix) - trailing_zeros] ;
Run Code Online (Sandbox Code Playgroud)
当您预定义 的大小newvec时,则newvec(v==0) = 1无法更改 的大小newvec,它只会分配给 的相应1索引。vec==0true