如何计算模糊函数

信息处理 matlab Python 雷达 r
2022-02-20 18:05:16

(也许这应该在 Stackoverflow 上而不是......)

计算歧义函数的最佳方法是什么?Python(如 PyTFTB 或来自 TooringAnalytics)和 Matlab 有不同的实现,但有很多困难:

1. Python - PyTFTB

我不确定 pytftb 的实现是否是我正在寻找的,因为我的数据的 200 个样本的图看起来总是相似的。这里有两个例子:

原始数据 200 个样本(示例 1) 歧义函数 200 个样本(示例 1) 原始数据 200 个样本(示例 2) 歧义函数 200 个样本(示例 2)

我期待更多不同的情节。这些图是这样生成的:

from tftb.processing import ambiguity
waf, tau, theta = ambiguity.wide_band(signal)
cntr = plt.contourf(tau, theta, np.abs(waf) ** 2, cmap="Greys", antialiased=True)
// even less difference when I use np.abs(waf) ** 2
plt.imsave("filename.jpg", np.abs(waf), cmap="jet")

2. Python——TooringAnalytics

不幸的是,我无法完成这项工作。也许这是另一个问题的内容。

3. MATLAB

不是一种选择。我尽力将其翻译R,但无法使其工作。

4.R

不幸的是,我还没有在 R 中找到实现。

我真的很想问 Dreamcooled 他是如何计算他的模糊函数的。

谢谢你的帮助

1个回答

Octave 是一个免费的大多数 MATLAB 兼容的应用程序。你不应该排除它。此外,如果您消除了两个图中明显的低频趋势,您的信号看起来会更相似。您可能有一个有效的歧义函数,尽管我认为您可能正在计算信号加噪声的歧义,而不是正确计算信号。

歧义函数不止一种,这是宽带单发射器单接收器版本。大多数人认为多普勒只是一种频移,但它实际上是一种时间膨胀,尽管频移模型通常就足够了,特别是在观察像分子发射线这样的稳定​​线时。

在声学中,传播介质的运动也会引起多普勒。

只要插值准​​确,此代码应该没问题,它假设信号每个周期的样本超过约 5 个点。

 % wide band ambiguity function
    clc
    clear all
    close all
    %
    tb=-1;
    tend=1;
    dialation=.8;
    %
    %signal=[zeros(1,100) randn(1,200) zeros(1,100)];
    %signal=[zeros(1,100) exp(1j*2*pi*(4*[0:199]/200)) zeros(1,100)];
    signal=[zeros(1,100) exp(1j*2*pi*(4*[0:199]+.01*[0:199].^2)/200) zeros(1,100)];
    conj_rev_signal=conj(signal(end:-1:1));
    time=linspace(tb,tend,length(signal));
    delay_time=linspace(2*tb,2*tend,2*length(signal)-1);
    tau=linspace(dialation,1/dialation,512);
    out=zeros(length(tau),2*length(signal)-1);
    for i=1:length(tau)
    out(i,:)=conv(signal,interp1(time,conj_rev_signal,time*tau(i),'spline'));
    end
    figure(1)
    imagesc(delay_time,tau,abs(out))

在此处输入图像描述