I have this matrix M:
0 1 2 4
1 5 4 6
3 3 0 1
7 8 0 5
I want to replace the elements in column 4 with 0 corresponding to which elements in column 2 lie between 4 and 9 (in the same row). For example the above matrix should change to :
0 1 2 4
1 5 4 0
3 3 0 1
7 8 0 0
I wrote this code , but it doesen't seem to work .
for i = 1:4
if 4<M(i,2<9
M(i,4)=0;
end
end

댓글 수: 2

Technically the code you wrote can work provided that you divide your logical statement into two combined ones:
M = randi(9,4,4)
M = 4×4
2 4 3 8 5 7 5 4 6 8 6 8 7 5 1 6
M2=M;
for i = 1:4
if 4<M(i,2) && M(i,2)<9
M(i,4)=0;
end
end
M
M = 4×4
2 4 3 8 5 7 5 0 6 8 6 0 7 5 1 0
you can also put a logical matrix in a array variable to change specific data according to your conditions which avoid the need for for loops:
%define value to be changed in colmun 2
conditions = and(M2(:,2)>4,M2(:,2)<9);
%change conditional values in column 4
M2(conditions,4) = 0
M2 = 4×4
2 4 3 8 5 7 5 0 6 8 6 0 7 5 1 0
Thanks for taking the time !!!

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

 채택된 답변

VBBV
VBBV 2022년 3월 1일

1 개 추천

for i = 1:4
if M(i,2)<9 & M(i,2) >4
M(i,4)=0;
end
end
Close the parenthesis and run it.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

릴리스

R2021a

질문:

2022년 3월 1일

댓글:

2022년 3월 1일

Community Treasure Hunt

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

Start Hunting!

Translated by