How to replace certain rows in a matrix with the same row vector?
1 view (last 30 days)
Show older comments
I have a 100 x 3 matrix that I first fill with a repeating row vector:
colours = repmat([1, 0, 0], 100, 1)
I then want to replace selected, non-contiguous rows of the matrix with a different row vector. Which rows should be replaced is determined by a 100 x 1 logical. The following code gives a dimension mismatch (I understand why):
colours(logical(data(:, 18)), :) = [0 1 0];
Is there a way to achieve this without a loop?
0 Comments
Accepted Answer
Stephen23
on 18 Mar 2016
Edited: Stephen23
on 18 Mar 2016
Here is one easy way:
new = [0,1,0];
idx = logical(data(:,18));
colours(idx,1) = new(1);
colours(idx,2) = new(2);
colours(idx,3) = new(3);
Although this is not a general solution for an arbitrary number of columns, because the color data will only ever have three columns it is quite acceptable to explicitly allocate to each column.
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!