我想在matlab中使用音乐算法GPR echo
估计信号的到达时间,我正在使用傅里叶变换的对偶性。
我首先对获得的信号应用 FFT,然后将这些作为参数传递给pmusic
函数,我仍然在频域中得到结果。?
简短回答:您在这里使用了错误的功能。
据我所知,Matlab 的pmusic
函数返回输入信号的伪谱。
如果单击伪谱链接,您将看到信号的伪谱存在于频域中。特别是看情节:
(来自 Matlab 的文档:Plotting Pseudospectrum Data)
请注意,结果在频域中。
假设 GPR 是指探地雷达,然后尝试使用雷达或声纳回波检测方法来估计双向传输时间。
这是可以做到的,该理论已发表在多篇论文中。例如,请参见此处:
那篇论文描述了时空估计(即估计时间和到达方向),但如果你有一个单天线接收器,你可以忽略空间部分,只做时间估计。
您可能不想直接使用 Matlab 的 pmusic 函数。为自己编写这些函数总是更快更容易,所以你知道实际发生了什么。在音乐的情况下:
% Get noise subspace (where M is number of signals)
[E, D] = eig(Rxx);
[lambda, idx] = sort(diag(D), 'descend');
E = E(:, idx);
En = E(:,M+1:end);
% [Construct matrix S, whose columns are the vectors to search]
% Calculate MUSIC null spectrum and convert to dB
Z = 10*log10(sum(abs(S'*En).^2, 2));
Phased array system toolbox
如果您想使用单个命令使用不同的算法估计 DOA,您可以使用MATLAB。比如 Root MUSIC 就是phased.RootMUSICEstimator
phased.ESPRITEstimator
.
然而,正如 Harry 提到的很容易编写自己的函数,一旦定义了信号子空间和接收向量,就可以直接将它应用到 MUSIC 函数中以找到它的峰值。这是另一个很好的参考。