gpt4 book ai didi

for-loop - 用 Octave 编写 'for' 的更简单方法

转载 作者:行者123 更新时间:2023-12-01 09:01:57 25 4
gpt4 key购买 nike

我用 Octave 编写了以下两段代码。

给定一个矩阵“img”,我想:

将所有不等于255的元素替换为0:

for i = 1:m
for j = 1:n
if (img(i,j) ~= 255)
img(i,j) = 0;
endif
endfor
endfor

将所有负数元素替换为 0,将所有大于 255 的元素替换为 255:

for i = 1:m
for j = 1:n
if (img(i,j) < 0)
img(i,j) = 0;
endif
if (img(i,j) > 255)
img(i,j) = 255;
endif
endfor
endfor

有没有更简单的写法?

最佳答案

类似 MATLAB 的 Octave 针对矩阵或向量计算进行了优化。也就是说,它有很多优化的编译代码,可以很好地处理矩阵乘法或计算逆矩阵或添加两个矩阵等。

另一方面,如果你创建了一个 for 循环,它就不能利用任何优化的代码并且必须被解释,所以通常需要更长的时间来做同样的事情。

以向量(或矩阵)形式编写代码或转换为该形式的代码风格称为“向量化”。

http://www.gnu.org/software/octave/doc/interpreter/Basic-Vectorization.html

对于你要求的第二种情况,你应该尝试这样的事情:

  img(img<0) = 0;

img(img>255) = 255;

对于第一种情况,如下所示:

  img(img ~= 255) = 0; 

关于for-loop - 用 Octave 编写 'for' 的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15450177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com