【问题标题】:Convolution between Matrix and Vector矩阵和向量之间的卷积
【发布时间】:2014-07-08 11:10:51
【问题描述】:

祝大家今天好!

我正在编写一个 matlab 程序,其中我在 Tx 的每一列和过滤器 h 之间进行卷积(我希望逐列过滤:第一列使用过滤器 h,第二列使用过滤器 h,.. ..等等)

Tx = complex(randn(165,12), randn(165,12));
h=[0.1 -0.05  0.2  -0.5  0.3 0.02];
  • 如何继续使用过滤器 h 过滤整个 Tx 矩阵?

我的 Matlab 代码:

Tx = complex(randn(165,12), randn(165,12));    
h=[0.1 -0.05  0.2  -0.5  0.3 0.02];
[r c]=size(Tx);

for i=1:c
   Rx=conv(h,Tx(:,i).');
end
  • 我想保存整个结果 Rx 矩阵?

【问题讨论】:

  • 你看过conv2吗?
  • @Dan : 谢谢你,你能举一个 conv2 的例子吗?她是如何工作的?
  • 她的工作方式与conv 完全一样……例如,试试conv2(h', Tx)。只需阅读文档并尝试一下。
  • 您通常将矩阵作为第一个参数,将过滤器作为第二个参数。如果您使用“相同”并用于内部 matlab 优化,这一点很重要。此外,转置小滤波器要快得多,而不是转置矩阵(很大)。

标签: algorithm matlab signal-processing telecommunication


【解决方案1】:

使用带有参数“same”的 conv2() 来保留原始大小或不使用以获得完整的卷积。

例子:

conv2(ones(5),[1,2.5,-0.7],'same')
conv2(ones(5),[1,2.5,-0.7]','same')

第一个使用过滤器对每一行进行卷积,第二个对每一列进行卷积。

你可以使用

 Rx =conv2(Tx,h','same');

【讨论】:

  • 我修改了我的代码,它变成了:x=conv2(Tx.',h);这是否意味着我正在尝试单独过滤 Tx 的每一列,最后我保存整个矩阵 Rx?
  • 是的。但是转置小滤波器会更快,而不是转置矩阵(很大)。此外,如果您不使用“相同”,则 Rx 将大于 Tx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
相关资源
最近更新 更多