有人能解释一下为什么在示例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==0
是true
的相应索引。