【问题标题】:Filtering and multiplying filtered matrix in matlab在matlab中过滤和乘法过滤矩阵
【发布时间】:2015-05-27 07:26:48
【问题描述】:

我想根据指定的标准过滤我的矩阵,然后对过滤后的矩阵进行乘法运算,然后将相乘后的过滤矩阵与矩阵的其余部分连接起来。例如。我的矩阵 a 如下:

 a =
 1     2     3     4
 4     5     6     2

然后,我将根据第二行对其进行过滤以对其进行乘法运算:选择值

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,然后加入它们?任何有助于更好实施的帮助表示赞赏。

【问题讨论】:

    标签: matlab matrix filter multiplication


    【解决方案1】:

    试试这个:

    %// 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
    

    【讨论】:

    • 如果我对多个单元格项目执行此操作(每个单元格行包含一个矩阵作为我的示例),整个解决方案是否可以被视为一个函数并使用 cellfun 呢?目前我在循环中使用 for 循环和您的解决方案。还有,使用 cellfun 而不是 for 真的有多大不同?
    • @hamideh 你可以使用cellfun。使用tic.. toc 看看哪个更快
    • 感谢您的指导
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多