Matlab 如何找到正弦信号的下包络?

Matlab 如何找到正弦信号的下包络?,matlab,signal-processing,Matlab,Signal Processing,我有一个正弦信号,它被一些随机噪声扭曲了。我想找出信号的下包络。我在MATLAB中使用了abs(Hilbert(y(t))来找出一个包络,但它只给出了上包络。有什么简单的方法可以找到信号的下包络吗 我还尝试了MATLAB内置的envelope函数来找出较低的信封,但它不起作用 y(t)由四个信号组成。 我必须找出信号的上下包络线 y(t) = A1 sin(2πf1t) + A2 sin(2πf2t) + A3 sin(2πf3t) + A4 rand() 我不确定你在找什么,但我会试试看。

我有一个正弦信号,它被一些随机噪声扭曲了。我想找出信号的下包络。我在MATLAB中使用了
abs(Hilbert(y(t))
来找出一个包络,但它只给出了上包络。有什么简单的方法可以找到信号的下包络吗

我还尝试了MATLAB内置的
envelope
函数来找出较低的信封,但它不起作用

y(t)
由四个信号组成。
我必须找出信号的上下包络线

y(t) = A1 sin(2πf1t) + A2 sin(2πf2t) + A3 sin(2πf3t) + A4 rand()

我不确定你在找什么,但我会试试看。如果您否定
y
,那么您将进入否定域,这将在使用
abs
时导致问题。为了避免这种情况,我们可以将
y
取反,然后添加一些常数使其再次为正。我们将常数设为某个上界,在这种情况下是最大值的两倍。我们翻转并转换信号,使其为正,然后计算翻转信号的上包络。接下来,我们反转平移并再次翻转以返回原始信号坐标

plot(t,y);
%% for upper envelope and lower envelope
upper_envelope = abs(hilbert(y));
ub = max(upper_envelope)*2;
hold on
plot(t,upper_envelope,'-r');
lower_envelope = ub-abs(hilbert(ub-y));
hold on
plot(t,lower_envelope,'-g');

y(t)
的下包络线与
-y(t)
的上包络线密切相关……我已经尝试过了,但结果似乎并不令人满意。为什么不令人满意?更新您的问题。
plot(t,y);
%% for upper envelope and lower envelope
upper_envelope = abs(hilbert(y));
ub = max(upper_envelope)*2;
hold on
plot(t,upper_envelope,'-r');
lower_envelope = ub-abs(hilbert(ub-y));
hold on
plot(t,lower_envelope,'-g');