Replacing elements in Array

7 次查看(过去 30 天)
Angela
Angela 2012-7-20
I have two 48 x 61 matrices, LE and Q. If the first and last row value of LE are the same, for those rows, I want the values of Q to equal Q(:, 61).
This is what I initially wrote, but am getting an error message.
C = find(LE(:,1) == LE(:,61)); % Outputs rows in which first and last values are equivalent.
Q(C,:) = Q(C, 61); % For all values in rows C, make every value in that row (of Q) the last value in row Q.
Error: subscript assignment dimension mismatch.
Any suggestions? Thanks!
  1 个评论
Image Analyst
Image Analyst 2012-7-20
It's always nice if the poster supplies some sample data in advance to make it easy for people to try things for her. I mean, why make it hard for people to help you?

请先登录,再进行评论。

采纳的回答

Jan
Jan 2012-7-20
Q(C, :) = repmat(Q(C, 61), 1, size(Q, 2));

更多回答(1 个)

Albert Yam
Albert Yam 2012-7-20
When length(C) > 1 , Matlab doesn't know how to replace the values.
(length(C) x 61) matrix , and a length(C) vector
If you loop it for every C, it should work, someone else might be able to point out a way without looping.
C = find(LE(:,1) == LE(:,61));
for ii=1:length(C)
Q(C(ii),:) = Q(C(ii), 61);
end

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by