在matlab中过滤和乘以过滤矩阵

Filtering and multiplying filtered matrix in matlab

我想根据指定的条件过滤我的矩阵,然后对过滤后的矩阵进行乘法运算,然后将相乘后的过滤后矩阵与矩阵的剩余部分相结合。例如。我的矩阵 a 如下:

 a =
 1     2     3     4
 4     5     6     2

然后,我将根据第二行对其进行过滤以对其进行乘法运算:选择值 <=4 的列项乘以 exp(-0.5)。然后我想将新行的总初始矩阵分配给过滤列。即期望的输出是:

a =
 1     2     3     4
 2.4261     5     6     1.2131

为此,我尝试 b= a(2,:)<=4 使用过滤矩阵并使用 bsxfun(@times,a(2,b),exp(-0.5)) 进行乘法运算,那么我是否应该为剩余的未过滤列使用另一个矩阵 c= a(2,:)>4 然后加入它们?对更好实施的任何帮助表示赞赏。

试试这个:

%// you have done this
mask = a(2,:)<=4;

%// taking 2nd row and masked cols and doing operations on those elements alone
a(2,mask) = a(2,mask).*exp(-0.5);

结果:

输入:

a =

 1     2     3     4
 4     5     6     2

输出:

>> a

a =

1.0000    2.0000    3.0000    4.0000
2.4261    5.0000    6.0000    1.2131