查看: 293|回复: 5|关注: 0

[已答复] matlab使用for循环加if筛选数值范围

[复制链接]

新手

6 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
发表于 2019-8-18 10:28:21 | 显示全部楼层 |阅读模式
本帖最后由 biglemon 于 2019-8-18 14:09 编辑

现在selected矩阵中有n组数据,第一列是筛选列,SS矩阵第1和第2列是筛选列的范围,因为顺序不同,需要selected第一列中每一个数字与SS中的每一个范围比对,只要满足范围就挑出来,想通过for循环和if判断讲selected中所需要的数据筛选出来。但因为新手,写的程序似乎有问题,每次运行结果都不是想要的筛选结果。希望大神能帮忙看一下。先谢谢了!

  1. [m,n]=size(selected);
  2. [a,b]=size(SS);
  3. for q=1:m
  4. for p=1:a
  5.         if SS(p,1)<selected(q,1)<SS(p,2)
  6.             SE(q,1:n)=selected(q,1:n)
  7.             else
  8.                 continue

  9.         end
  10. end
  11. end
复制代码

下面是矩阵示例
selected
1        0.444712060000000
2        0.990186535000000
3        0.615699920000000
4        0.454107411000000
5        0.953729750000000
6        0.278450703000000
7        0.679612120000000
8        0.526662321000000
9        0.307638992000000
10        0.334667984000000
11        0.773718022000000
12        0.773949156000000
13        0.994088294000000
14        0.416288548000000


SS
0.500000000000000        1.50000000000000
4.50000000000000        5.50000000000000
5.50000000000000        6.50000000000000
2.50000000000000        3.50000000000000
7.50000000000000        8.50000000000000
10.5000000000000        11.5000000000000
9.50000000000000        10.5000000000000
3.50000000000000        4.50000000000000


MATLAB 基础讨论
版块优秀回答者

中级

830 麦片

财富积分


5001500


0

主题

1334

帖子

180

最佳答案
  • 关注者: 34
发表于 2019-8-18 19:02:44 | 显示全部楼层
selected=[1        0.444712060000000
2        0.990186535000000
3        0.615699920000000
4        0.454107411000000
5        0.953729750000000
6        0.278450703000000
7        0.679612120000000
8        0.526662321000000
9        0.307638992000000
10        0.334667984000000
11        0.773718022000000
12        0.773949156000000
13        0.994088294000000
14        0.416288548000000];

SS=[0.500000000000000        1.50000000000000
4.50000000000000        5.50000000000000
5.50000000000000        6.50000000000000
2.50000000000000        3.50000000000000
7.50000000000000        8.50000000000000
10.5000000000000        11.5000000000000
9.50000000000000        10.5000000000000
3.50000000000000        4.50000000000000];


[m,n]=size(selected);
[a,b]=size(SS);
ii=1;
for q=1:m
for p=1:a
if SS(p,1)<selected(q,1)&&selected(q,1)<SS(p,2)
SE(ii,1:n)=selected(q,1:n);
ii=ii+1;
else
continue
end
end
end
你是想要这样吧,你的if判断表达式不要那样写!!!

MATLAB 基础讨论
版块优秀回答者

中级

830 麦片

财富积分


5001500


0

主题

1334

帖子

180

最佳答案
  • 关注者: 34
发表于 2019-8-18 19:02:47 | 显示全部楼层
selected=[1        0.444712060000000
2        0.990186535000000
3        0.615699920000000
4        0.454107411000000
5        0.953729750000000
6        0.278450703000000
7        0.679612120000000
8        0.526662321000000
9        0.307638992000000
10        0.334667984000000
11        0.773718022000000
12        0.773949156000000
13        0.994088294000000
14        0.416288548000000];

SS=[0.500000000000000        1.50000000000000
4.50000000000000        5.50000000000000
5.50000000000000        6.50000000000000
2.50000000000000        3.50000000000000
7.50000000000000        8.50000000000000
10.5000000000000        11.5000000000000
9.50000000000000        10.5000000000000
3.50000000000000        4.50000000000000];


[m,n]=size(selected);
[a,b]=size(SS);
ii=1;
for q=1:m
for p=1:a
if SS(p,1)<selected(q,1)&&selected(q,1)<SS(p,2)
SE(ii,1:n)=selected(q,1:n);
ii=ii+1;
else
continue
end
end
end
你是想要这样吧,你的if判断表达式不要那样写!!!

入门

376 麦片

财富积分


50500


40

主题

1771

帖子

83

最佳答案
  • 关注者: 16
发表于 2019-8-18 22:56:15 | 显示全部楼层
WarnerChang 发表于 2019-8-18 19:02
selected=[1        0.444712060000000
2        0.990186535000000
3        0.615699920000000

a < b < c  的判断条件在程序中执行的是  ( a < b ) < c。

实际是  ( a < b ) 的结果(0或1)与c在比较大小。

因此  a < b < c 在程序中应写成  a < b && b < c 。  

新手

6 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-8-19 09:08:37 | 显示全部楼层
pzfs1016 发表于 2019-8-18 22:56
a < b < c  的判断条件在程序中执行的是  ( a < b ) < c。

实际是  ( a < b ) 的结果(0或1)与c在比较 ...

真的非常感谢您给的解释!谢谢了!

新手

6 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-8-19 09:10:30 | 显示全部楼层
WarnerChang 发表于 2019-8-18 19:02
selected=[1        0.444712060000000
2        0.990186535000000
3        0.615699920000000

谢谢您帮我该代码!我会注意学习基础语法的。谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表