有人能解释一下为什么在示例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

示例B
vec = [0 2 3 0 5 3]     %1 x 6
newvec(vec == 0) = 1    %produces a 1 x 4 vector

最佳答案

编辑:
感谢丹指出了错误。
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] ;

当预先定义newvec的大小时,newvec(v==0) = 1无法更改newvec的大小,它只将1指定给vec==0true的相应索引。

08-18 09:44