While循环找到第一个元素指数小于和大于一个向量
72(30天)
显示旧的评论
你好,
我有以下问题:
“使用while循环,找到第一个元素及其指数变量”“这是大于0.42小于0.52。确保你的代码不评估指数大于20”
我写了下面的代码:
清晰;
clc;
1 =兰德(20日);
指数= [];
n = 1;
而(n) < 0.42 & & (n) > 0.52
n = n + 1;
指数=[指数n]
结束
然而,绝对不发生(没有显示输出),我不明白为什么。有人能告诉我我做错了什么吗?
我也不知道如何写代码,以便它不评估指数大于20。我可以用一个if语句在while循环?虽然我不知道怎么做。有人也许有什么提示吗?
非常感谢,
强加于人
答案(3)
Awais赛义德
2021年11月16日
有必要使用while循环?For循环工作正常
1 =兰德(20日)
为itr = 1:1:长度(a)%迭代开拓一个行向量
如果((itr) > 0.42 & & (itr) < 0.52)% id条件满足
指数= itr%的指数
元素= (itr)%得到元素
打破;
结束
结束
1月
2021年11月16日
编辑:1月
2021年11月16日
这是不可能的,一个号码是小于0.42,大于0.52:
(n) < 0.42 & & (n) > 0.52
% ^ ^交换运营商…
因此这个循环不是在任何情况下。
测试限制20 n是失踪。如果找到任何索引,循环也可以停止。两种情况下匹配而条件也:
而isempty(指数)20 & & & & n < =…插入固定的比较
完整性:一个经验丰富的Matlab程序员会写:
指数=找到(< 0.42和< 0.52,1);
有时候很奇怪,如果一个家庭作业的问题迫使你使用Matlab unmatlabish最多的方式。
6个评论
1月
2021年11月17日
@dpb
我以为你的意思
isbetween (),
//www.tianjin-qmedu.com/help/matlab/ref/datetime.isbetween.html
,因为我无法找到
iswithin ()
。然后:
指数=找到(isbetween (0.42, 0.52,“开放”),1);
图像分析
2021年11月16日
不需要使用或(| |)和(& &):
清晰;
clc;
=兰德(20)
指数= 1;
outOfRange =(索引)< 0.42 | |(索引)> 0.52
而outOfRange & &指数< 20
指数=指数+ 1;
outOfRange =(索引)< 0.42 | |(索引)> 0.52;
结束
流(“发现% f指数% d。\ n”(索引),索引)
3评论
dpb
2021年11月16日
“我为什么要使用或不是?”
正如之前指出的那样,这是不可能的了
这两个
大于0.52
和
同时小于0.42,你最初写的——这是条件
而(n) < 0.42 & & (n) > 0.52
@Image分析师
写了
outOfRange =(索引)< 0.42 | |(索引)> 0.52
这是惟一真正当特定是什么
不
在范围内,但是是一个可行的条件,因为它是条件,是真的,不是两个,这是肯定会发生的事情;同时在其他的极端是不可以实现的。
在他使用一个循环和条件的指望数组大小,这样条件为真只有都是如此——因此,一旦你发现一个数字范围
或
柜台的数组,
而
循环退出。这意味着这种逻辑只发现一个值(第一个)按位置数组中满足条件是否有可能是也可能不是。这也意味着,如果数组中的第一个元素满足的范围
而
循环从未执行。
在这种情况下,您正在测试的负面(逻辑)你正在寻找的条件
而
循环将继续寻找其他的情况。注:逻辑变量的值在循环开始前在exampe——这是真的,但是你还没有找到想要的值。
可选择的解决方案使用
找到
和逻辑测试的价值正在寻找满足条件的值在积极意义上的逻辑测试
找到(iswithin (0.42, 0.52)
使用我的包装器,可以归结为
找到((> 0.42)& (< 0.52))
逻辑表达式返回逻辑向量的大小一个向量的值为True,条件是正确,但因为这是测试的值保持而不是试图继续寻找价值时不是只想要一个,然后测试是一个。
简而言之,这一切都取决于你正在寻找什么,结果是如何被使用的。