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

[已解决] 条件一满足就停止,怎么处理?

[复制链接]

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
假设有一列random的数据(行数:500):
1
2
32
4
2
354
6
23
1
60
6
9
...
这列数据里从第一行开始,对元素进行判定,是否大于50。
第1行开始到第5行都小于50,显示"No"
第6行354大于50,显示“Yes“。
然后条件判定就结束了,不需要再对下面的元素进行判定,
就到第六行就OK了,这个怎么处理?


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

入门

281 麦片

财富积分


50500


1

主题

112

帖子

36

最佳答案
  • 关注者: 5
发表于 2020-1-21 21:51:33 | 显示全部楼层 |此回复为最佳答案
  1. A = [1 2 32 4 2 354 6 23 1 60 6 9];
  2. for ii = 1 : 500
  3.     if A(ii)<50
  4.         disp('No');
  5.     else
  6.         disp('Yes');
  7.         break;
  8.     end
  9. end
复制代码

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-1-21 21:56:11 | 显示全部楼层

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-1-21 22:09:38 | 显示全部楼层

另外,请教下,如果不用display显示计算结果,输出的是一个variable[No,No,No,No,No,Yes],怎么处理?

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

入门

281 麦片

财富积分


50500


1

主题

112

帖子

36

最佳答案
  • 关注者: 5
发表于 2020-1-21 22:22:12 | 显示全部楼层
IAe 发表于 2020-1-21 22:09
另外,请教下,如果不用display显示计算结果,输出的是一个variable[No,No,No,No,No,Yes],怎么处理? ...

输入 A>50 可以得到一个逻辑向量,0表示否,1表示是。
  1. >> A>50

  2. ans =

  3.   1×12 logical array

  4.   Columns 1 through 11

  5.    0   0   0   0   0   1   0   0   0   1   0

  6.   Column 12

  7.    0
复制代码


如果你不想要逻辑矩阵的结果,你可以存一个字符为‘no’和‘yes’的cell 矩阵,即可。
  1. A = [1 2 32 4 2 354 6 23 1 60 6 9];
  2. flag = {};
  3. for ii = 1 : 500
  4.     if A(ii)<50
  5.         flag{ii} = 'No';
  6.     else
  7.         flag{ii} = 'Yes';
  8.         break;
  9.     end
  10. end
复制代码

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-1-21 22:30:17 | 显示全部楼层
gopher 发表于 2020-1-21 22:22
输入 A>50 可以得到一个逻辑向量,0表示否,1表示是。

很有用,谢谢~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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