0

我有一个小代码,应该为最小相位 FIR 滤波器设计实现倒谱反卷积,但作为非 matlab 人,我很难理解它。有人可以帮忙吗?

wn = [ones(1,m)
      2*ones((n+odd)/2-1,m)
      ones(1-rem(n,2),m) 
      zeros((n+od d)/2-1,m)];
y = real(ifft(exp(fft(wn.*real(ifft(log(abs(fft(x)))))))));

主要是我不明白第一行,第二行中的“。*”符号,也可能在某些时候第二行应该从实域转换为复域,但我不知道在哪里。有任何想法吗?

4

1 回答 1

0
  • 在第一行中,您wn逐行构造矩阵。

  • .*运算符表示逐元素乘法。*单独将意味着矩阵乘法。实际上,您应该注意 和 的大小x必须wn相同才能使逐元素乘法有意义。

  • 实际上,第二行中没有任何从实数到复数的转换。有函数log, fft,ifft可能会根据输入返回复数值。

您可以通过命令访问 Matlab 帮助helpdoc(例如,doc ones应该生成ones函数的文档 - 这会生成一个填充有其参数指定的大小的矩阵)。

要在检查某些代码时快速调用帮助,可以通过F1在光标位于函数名称末尾(就在括号之前)时按下按钮来使用 Matlab 的内联帮助。

于 2013-05-26T15:30:25.157 回答