我有一个合成信号(下图底部),它是输入信号(顶部)和目标函数(中间)的卷积。目的是在输入信号已知时从卷积信号中检索目标函数。从实际的角度来看,这似乎是一个病态问题,但我很想知道专家对一个人能走多远以及使用什么 SP 工具集的意见。具体来说,我想知道:1)。比较第一个波包和第二个波包,如何判断目标函数中的第一个方格是时间跨度较短但幅度相同的波包,还是时间跨度相同但幅度较小的波包;2)。对于第 4 个方格,如何判断它不是两个单独的短方格,而不是一个长方格。一世' 我还附上了我用来生成数字的 Matlab 代码。非常感谢。
clear; close all;
%% 10MHz incident signal;
fs = 1000e6;
f = 10e6;
wavelength = fs/f;
sig = wavemaker(3.5, f, fs);
figure; subplot(3,1,1);
plot(sig, 'LineWidth', 1); title(strcat('input signal, wavelength =',num2str(wavelength),' data pts'));
axis([0,3300,-2,2])
%% Sparse signal;
N = 3000; % N : length of signal
s = zeros(N,1);
k = [50:(50+wavelength*0.1) 500:(500+wavelength*0.6) 1200:(1200+wavelength*1.6) 2200:(2200+wavelength*4.6)];
s(k) = 1;
subplot(3,1,2);
plot(s, 'LineWidth', 1); title('distribution: objective function');
axis([0,3300,0,2])
%% convoluted signal
y = conv(sig,s);
subplot(3,1,3);plot(y, 'LineWidth', 1);hold on;
plot(abs(hilbert(y)), 'LineWidth', 1);
title('convoluted signal between input and districution');
xlim([0,3300])
function x = wavemaker(nCycles, fc, fs)
% function to generate wave packet;
nSample = round(fs / fc * nCycles);
ts = 1 / fs;
T = ts * nSample;
t_max = ts * (nSample-1);
t = 0: ts: t_max;
x = sin( 2 * pi * fc .* t);
x = x.*hanning(nSample)';
end