For loop 更简单的书写方式';对于';八度
我用八度音阶写了下面两段代码 给出一个矩阵“img”,我想: 将不等于255的所有元素替换为0:For loop 更简单的书写方式';对于';八度,for-loop,matrix,replace,octave,For Loop,Matrix,Replace,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
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
i=1:m时的
对于j=1:n
if(img(i,j)<0)
img(i,j)=0;
恩迪夫
如果(img(i,j)>255)
img(i,j)=255;
恩迪夫
外循环
外循环
有没有一种更简单的方法来写这篇文章?像MATLAB这样的倍频程是为矩阵或向量计算而优化的。 也就是说,它有很多优化的编译代码,可以很好地处理矩阵乘法、求逆或两个矩阵相加等问题 另一方面,如果你做一个for循环,它就不能利用那些优化过的代码中的任何一个,并且必须被解释,所以做同样的事情通常需要更长的时间 以向量(或矩阵)的形式编写代码,或将其转换为向量形式的方式称为“向量化” 对于您询问的第二种情况,您应该尝试以下方法:
img(img<0) = 0;
img(img>255) = 255;
img(img ~= 255) = 0;
您可以在第二个for中使用else if(而不是单独的if),因为img(i,j)将是255,但不能同时是255