matlab - Logical indexing creates row instead of column -
i failing understand behaviour of matlab i've discovered. here code:
ix = logical([1; 0; 1]); value = [2; 2; 2]; newvalue(ix) = value(ix) it outputs
2 0 2 while expect
2 0 2 i can “correct” adding newvalue = nan(size(value)) before code. understand why matlab creates row column vectors.
it behavior because when create array using indexing: a(1) = 2; a(2) = 3;, matlab (and octave) create row (a=[2, 3]). , when use logical indexing use method. in case matlab executes
newvalue(1) = value(1); newvalue(3) = value(3); but @irreducible says, can avoid pre-allocating newvalue
and can obtain same results without using logical indexing with:
ix = [1; 0; 1]; value = [2; 2; 2]; newvalue = value.*ix;
Comments
Post a Comment