如何用matlab筛选一个数组中大于某值的数

例如a=【12,4,25,36,5,18,9】求大于10的数... 例如a=【12,4,25,36,5,18,9】求大于10的数 展开
 我来答
爱笑的柯南推理
2018-07-13 · TA获得超过6192个赞
知道大有可为答主
回答量:6693
采纳率:65%
帮助的人:1183万
展开全部
数组很大,运算速度很慢,可以提出所有大于0的值一起运算,得到的值再放回原位么?
对于这一问,可以采用逻辑下标,对大的数组可以有效地提高处理速度。
比如数组(或矩阵)为A,10行20列,其中有3个元素大于0,具体位置未知. index_positive = A>0;这样得到的index_positive 是这些元素的逻辑下标,index_positive是一个与A相同大小的10行20列的0,1值数组,只有那三个元素的位置上,值是1.
然后 B=A(index_positive)就得到了这三个元素的值。然后对B里的元素进行需要的运算。最好是相同的或有规律的,比如所有元素乘以2,那么就是C=2×B;或者第1个元素×1, 第2个元素×2等,这时可以D=1:3; C=B .* D; 。 如果每一个要进行不同的运算,那这里只有对B进行循环。
最后要把C放回原位,用A(index_positive)=C;就可以了。
对于一个1000×1000的数组(矩阵),这个方法的速度提高是很可观的。原因在于它使用C语言实现了循环,而for循环是用matlab语言实现的,判断循环条件的时候大大消耗了时间。
鸟鸟爷
2019-10-31
知道答主
回答量:54
采纳率:0%
帮助的人:8.2万
展开全部
find函数即可搞定 具体find(a>10)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式