MATRIX MANUPULATION IF CONDTION NOT WORKING

1 次查看(过去 30 天)
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 个评论
Johan
Johan 2022-3-1
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

请先登录,再进行评论。

采纳的回答

VBBV
VBBV 2022-3-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 个)

类别

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

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by