how to make an envelope of a signal?

18 次查看(过去 30 天)
Bart
Bart 2012-3-12
He,
I have some trouble with making an envelope of a noisy signal with Matlab. Is there some function to do this?

回答(3 个)

Image Analyst
Image Analyst 2012-3-12
Try morphological dilation and erosion - they're the local max and min. Use imdilate and imerode if you have the image processing toolbox.
numberOfSamples = 200;
t = linspace(0, 4*pi, numberOfSamples);
decay = exp(-t);
y = 10 .* sin(t) .* exp(-t) + rand(1, numberOfSamples);
plot(t, y, 'r-');
grid on;
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
upperEnvelope = imdilate(y, true(1, 9));
lowerEnvelope = imerode(y, true(1, 9));
hold on;
plot(t, upperEnvelope, 'b-', 'LineWidth', 2);
plot(t, lowerEnvelope, 'b-', 'LineWidth', 2);

Andrei Bobrov
Andrei Bobrov 2012-3-12
Use rand, randn, etc.
eg
x = linspace(0,2*pi,300);
sx = sin(x);
out = sx + .2*(2*rand(size(x)) - 1);
plot(x,sx,'b.',x,out,'r*'); grid on
  2 个评论
sunil kalyankar
sunil kalyankar 2018-3-26
i have data in time domain envelope analysis pls help me in writing matlab code pls pls
Image Analyst
Image Analyst 2018-3-26
There are now boundary() and envelope() functions in MATLAB. Try them.

请先登录,再进行评论。


Daniel Shub
Daniel Shub 2012-3-12
You could use the Hilbert Transform.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by