Matlab:在矩阵中的一个维度上应用阈值

3
我有一个矩阵 M(x,y)。 我想在x的所有值上应用一个阈值,这样如果 x < t,则将其设为0。 否则,保留原始值。
例如: M = 1, 2; 3, 4; 5, 6;
如果在第一维上应用t = 5,则结果如下: R = 0, 2; 0, 4; 5, 6;
2个回答

5

一种方法(使用M(:,1)选择第一列;M(:,1)<5返回第一列中小于5的项目的行索引)-

> R = M;
> R(M(:,1)<5,1) = 0

R =

   0   2
   0   4
   5   6

另外 -
R = M;
[i,j]=find(M(:,1)<5); % locate rows (i) and cols (j) where M(:,1) < 5
                      % so j is just going to be all 1
                      % and i has corresponding rows
R(i,1)=0;

1

在任意维度的矩阵中执行此操作:

thresh_min = 5;
M(M < thresh_min) = 0;

M < thresh_min这个语句返回小于thresh_min的所有M的索引,然后可以使用这些索引重新索引到M中,将符合您所需标准的所有值设置为0(或其他您想要的值)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接