comparing and addition of two matrices
조회 수: 1 (최근 30일)
이전 댓글 표시
a=[9,41,48,0,0,0,0,0;15,47,56,0,0,0,0,0;25,67,0,0,0,0,0,0];b=[21;11;30]; I am having three rows in a and b. I need to compare a with b for example i am taking 21 from b and comparing with the first row of a, first row first column value is 9, but b value is 21 its greater than a so the remaining columns in first row should be added by 5 except zero [9, 46, 53,0,0,0,0,0]. Similarly in the second row of a has to be compared with second row of b [20,52,61,0,0,0,0,0]. Third row [25,72,0,0,0,0,0,0]. Finally my a=[9,46,53,0,0,0,0,0;20,52,61,0,0,0,0,0;25,72,0,0,0,0,0,0]. suggest with some points.
댓글 수: 4
dpb
2014년 6월 10일
That isn't quite the rule he gave, though--he adds for all columns from 2:end irrespective of the first column comparison; it's only that first column that is dependent on the value in b, apparently. (At least that's what his example gives as a result.)
Geoff Hayes
2014년 6월 10일
Huh. I could have sworn the second row of b didn't have 5 added to the elements from 2:end. I see now how it does from 1:end though...
채택된 답변
dpb
2014년 6월 10일
Look up "logical addressing"...
>> ix=[b<a(:,1) a(:,2:end)>0];
>> a(ix)=a(ix)+5
a =
9 46 53 0 0 0 0 0
20 52 61 0 0 0 0 0
25 72 0 0 0 0 0 0
댓글 수: 2
dpb
2014년 6월 11일
Chuckles...thanks, glad I did seemingly get the intent correct; wasn't really sure if the actual example really was what was intended or not.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!