逻辑索引的问题

2视图(30天)
RP
RP 2019年4月24日
评论道: Ajith托马斯 2019年7月19日
我想写一个函数,将一个行向量的温度作为输入,并将温度低于32°的数量作为输出。我试过这个:
函数numfreeze = freeezing(温度)
numfreeze =元素个数(冻结(冻结< 32))
结束
…但我得到错误消息 的内存。可能的原因是一个无限递归程序。”
谁能帮我,告诉我这是什么意思吗?当我刚使用
numfreeze =元素个数(冻结(冻结< 32))
在命令窗口中设置一个向量后“温度”,它将正常工作。

接受的答案

Guillaume
Guillaume 2019年4月24日
编辑:Guillaume 2019年4月24日
冻结 函数的名称。所以当你写 冻结 在函数内部,你告诉它本身。当然,一旦它被称为本身,它重新制作 冻结 叫广告有限。因此,无限递归。
你可能要使用的输入变量 温度 在这个函数
函数numfreeze = freeezing(温度)
numfreeze =元素个数(温度(温度< 32))
结束
虽然上面的工作,这不是最有效的。你删除所有元素高于32然后找出多少仍然存在。它是简单的数量多少 真正的 的值在逻辑删除数组而不是打扰,所以:
函数numfreeze = freeezing(温度)
numfreeze = nnz(温度< 32);%还可以使用代替nnz总和
结束
1评论
RP
RP 2019年4月24日
非常感谢,这个工作和我之前不知道nnz !

登录置评。

更多的答案(2)

亚历克斯Mcaulley
亚历克斯Mcaulley 2019年4月24日
我认为你有一个错误,要求无限次函数冻结,然后:
函数numfreeze = freeezing(温度)
numfreeze =元素个数(温度(温度< 32))
结束

Ajith托马斯
Ajith托马斯 2019年7月19日
函数numfreeze =冻结(w)
lowerthan_32 = w (w < 32);
no_logical_values = lowerthan_32 (lowerthan_32 > = 0);
numfreeze =长度(no_logical_values);
结束
1评论
Ajith托马斯
Ajith托马斯 2019年7月19日
函数numfreeze =冻结(w)
lowerthan_32 = w (w < 32);
numfreeze =元素个数(lowerthan_32);
结束

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!