我有一个图像的矩阵A
,其元素从0到255.现在我只想将> 48
和< 200
的元素更改为它们的平方根。 / p>
我知道我可以找到并替换这样的元素:
A(A>48 & A<200) = 3;
但我不想将元素设置为数字,我想使用元素值作为新值。
这样的事情:
A(A>48 & A<200).^(1/2)
上面的语法显然不正确,但我想计算> 48
和< 200
有没有循环的方式?
答案 0 :(得分:4)
你非常接近:
A(A>48 & A<200) = A(A>48 & A<200).^(1/2);
A > 48 & A < 200
创建logical
掩码,仅将操作应用于A
中的特定条目。因此,如果您只想选择> 48
和< 200
这些元素,请执行此操作,但是当您应用操作时,请确保仅分配给那些位置。
如果您想减少输入,请单独创建掩码,然后执行分配:
mask = A > 48 & A < 200;
A(ind) = A(ind).^(0.5);
根据Troy Haskin的建议,最好实际使用sqrt
而不是半功率,因为sqrt
是一种专门操作并且已经过优化。
因此,请改为:
mask = A > 48 & A < 200;
A(ind) = sqrt(A(ind));