gpt4 book ai didi

matlab - 如何根据条件替换某些列值?

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:47 25 4
gpt4 key购买 nike

我有一个矩阵 A 这样

A=
4.0000 120.0000 92.0000 0 0 37.6000 0.1910 30.0000
10.0000 168.0000 74.0000 0 0 38.0000 0.5370 34.0000
10.0000 139.0000 80.0000 0 0 27.1000 1.4410 57.0000
1.0000 139.0000 60.0000 23.0000 846.0000 30.1000 0.3980 59.0000
5.0000 136.0000 72.0000 19.0000 175.0000 25.8000 0.5870 51.0000
7.0000 121.0000 0 0 0 30.0000 0.4840 32.0000

我想做两件事:

  1. 用 0 替换第一列大于 5 的值。
  2. 在第二列中,如果值在 121-130 范围内,则将其替换为 0。如果它们在 131-140 范围内,则将其替换为 1,将 141-150 替换为 2,将 151-160 替换为 3,等

所以期望的结果矩阵是:

A=
4.0000 0.0000 92.0000 0 0 37.6000 0.1910 30.0000
0.0000 4.0000 74.0000 0 0 38.0000 0.5370 34.0000
0.0000 1.0000 80.0000 0 0 27.1000 1.4410 57.0000
1.0000 1.0000 60.0000 23.0000 846.0000 30.1000 0.3980 59.0000
5.0000 1.0000 72.0000 19.0000 175.0000 25.8000 0.5870 51.0000
0.0000 0.0000 0 0 0 30.0000 0.4840 32.0000

我怎样才能做到这一点?

我正在尝试这样的事情:

counter=1;
for i = 1: rows
if A(i,1) > 5
A(i ,1) = 0;
end
if A(i,2) > 120 && A(i,2) < 130
A(i ,2) = 0;
end
counter = counter+1;
end

使用案例会成功吗?

最佳答案

您可以像这样修改 A 的前两列:

A(A(:,1) > 5,1) = 0;             %# Set values in column 1 greater than 5 to 0
A(:,2) = fix((A(:,2)-121)./10); %# If the values in column 2 are all 120 or
%# greater you can shift, scale, then round
%# them towards 0 to get the new values

以上使用matrix indexingvectorized operations避免 for 循环或 case 语句。

关于matlab - 如何根据条件替换某些列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4894878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com