Replacing multiple columns elegantly with a vector
10 次查看(过去 30 天)
显示 更早的评论
I am looking for an elegant and simple way to replace a some columns in a matrix (specified by a logical array) with a given column vector, e.g:
M = magic(5);
replace_column = boolean([1 0 0 1 0]); %replace the 1st and 4th column
replace_with = [5;5;5;5;5]; %column vector that the targeted columns should be replaced with
I now want to replace the columns corresponding to the entries of replace_column equal to 1 with the vector specified in replace_with.
I do not want to use a for-loop here, because I think there is a simple solution to this. However, using
M(:,replace_column) = replace_with;
results in an error:
Unable to perform assignment because the size of the left side is 5-by-2 and the size of the right side is 5-by-1.
Do you have an idea how to solve this?
0 个评论
采纳的回答
Fangjun Jiang
2021-2-1
编辑:Fangjun Jiang
2021-2-1
You want to replace two columns but only provided one column of data. Provide the matching data.
M(:,replace_column) =repmat(5,5,2)
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!