仅计算矩阵

时间:2016-04-19 16:45:29

标签: matlab matrix

我有一个图像的矩阵A,其元素从0到255.现在我只想将> 48< 200的元素更改为它们的平方根。 / p>

我知道我可以找到并替换这样的元素:

A(A>48 & A<200) = 3;

但我不想将元素设置为数字,我想使用元素值作为新值。

这样的事情:

A(A>48 & A<200).^(1/2) 

上面的语法显然不正确,但我想计算> 48< 200

元素的平方根

有没有循环的方式?

1 个答案:

答案 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));