matlab - matlab循环通过nxn矩阵陷入无限循环
问题描述
我在 matlab 中有 2 个 nxn 矩阵,我想检查 m1 的所有元素,如果 m1(x,y) 的值 <100 或 >200 将 m2(x,y) 的值设置为 1。这应该是超级简单,但是它是用 matlab 编写的,并且由于某种我不明白的原因而无休止地循环。这是代码
for q=1:256
for w=1:256
if m1(q,w) > 200 | m1(q,w) < 100
m2(q,w) = 1
end
end
end
解决方案
您的原始代码还可以,但是显示输出需要很长时间。
请注意,当给 m2 赋值的行如下:
m2(q,w) = 1
对于 for 循环的每次迭代,Matlab 显示整个 m2 矩阵,这需要大量时间逐行执行。
要解决此问题,请添加分号以防止显示 m2 矩阵,您应该会看到执行时间如下:
tic
m1 = round(255*rand(256));
for q=1:256
for w=1:256
if m1(q,w) > 200 | m1(q,w) < 100
m2(q,w) = 1;
end
end
end
toc
Elapsed time is 0.011460 seconds.
最后,评论部分的 Cris Luengo 也有一种优雅的方式来执行您的计算。
推荐阅读
- jquery - 当我使用平板电脑访问网站时导航消失(横向模式)
- laravel-5 - Laravel Voyager - 使用自定义表单在前端上传图片
- amazon-s3 - 通过 S3 预签名 URL 上传图像。下载图像时,无法访问。设置 Content-Type 使签名无效
- 3d - “如何在 Julia 中绘制 3D 条形图”
- java - java.lang.ClassNotFoundException:尝试使用 Jackson 而不是 Johnzon 作为 JSON 提供程序时,Apache TomEE 中的 javax.ws.rs.ext.MessageBodyReader
- bash - awk 抱怨来自连接字符串的命令中的非终止字符串
- java - 对象序列化期间的 DbUtils 类型转换问题
- mysql - SQL:每个结果中的一组结果
- function - 如何访问函数内部的全局变量
- android - uiController.loopMainThreadForAtLeast 与 Thread.sleep 有何不同?