how to change a variable?

조회 수: 2 (최근 30일)
Rengin
Rengin 2015년 4월 27일
답변: Thorsten 2015년 4월 27일
clear all
clc
nrow=5;
ncolumn=3;
A=[12 28 35;42 14 30;16 25 13;21 34 12;32 18 26];
B=[14 26 18;17 41 32;19 23 34;36 38 17;25 18 16];
C=sum(A,2);
D=sum(B,2);
SumLast=zeros(nrow,1);
for i=1:nrow
for j=1:ncolumn
% if jth (2.) column in ith (3.) row in A matrix bigger than
% jth (2.) column in ith (3.) row in B matrix, I want to put ith
% (3.) row of D matrix in ith (3.) row of LastSum
if (A(i,j)>B(i,j))
SumLast(i)=D(i);
% Otherwise, I want to meet the condition below:
else
SumLast(i)=C(i);
end
end
end
% I want to have LastSum=[58 90 76 67 59] but instead
% I get LastSum=[58 86 54 67 59]
% How can i correct that script?
% Many Thanks!
  댓글 수: 2
Michael Haderlein
Michael Haderlein 2015년 4월 27일
Sorry, I don't understand how you select the value you want to put to SumLast. In your loop, you overwrite the value two times, I guess this is not intended. Best would be to just place a breakpoint at your first for and then use single step mode (F10 to forward one line) and see what happens.
Rengin
Rengin 2015년 4월 27일
Basically if an element in A matrix is bigger than the corresponding element in B matrix, I make my selection from D matrix. Otherwise, from C matrix. If one element in a row in A matrix is bigger than the corresponding element in B matrix, without looking at other elements in the row, I go to the following row. When you execute the script and look at my example, you'll understand what I mean

댓글을 달려면 로그인하십시오.

답변 (1개)

Thorsten
Thorsten 2015년 4월 27일
SumLast = D;
ind = ~any(A>B, 2);
SumLast(ind) = C(ind);

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by