查看: 1927|回复: 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


回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

0

主题

2263

帖子

351

最佳答案
  • 关注者: 63
发表于 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判断表达式不要那样写!!!
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

0

主题

2263

帖子

351

最佳答案
  • 关注者: 63
发表于 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判断表达式不要那样写!!!
回复此楼 已获打赏: 0 积分

举报

入门

385 麦片

财富积分


50500


40

主题

1773

帖子

83

最佳答案
  • 关注者: 18
发表于 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 。  
回复此楼 已获打赏: 0 积分

举报

新手

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在比较 ...

真的非常感谢您给的解释!谢谢了!
回复此楼 已获打赏: 0 积分

举报

新手

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

谢谢您帮我该代码!我会注意学习基础语法的。谢谢了!
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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