How to create a good load spectrum envelope from a noisy spectrum?

5 次查看(过去 30 天)
So I am currently working on obtaining the response of the structure to a wind loads. I´ve transformed my enormous sets of data to spectrums in order to perform Harmonic Analysis (using ansys for that purpose) and I´ve already done all the fft+windowing+overlapping routine in order to increase the quality of my spectrums (remove leakage etc.). As the result I have something like this:
As you can see the spectrum is kinda "noisy" and I would like to obtain something like the next imagine if that makes sense:
I´ve tried creating envelope but the result was not satisfactory (a lot of new jumps between peaks, I want the data to be "smoother"). I´ve also tried filtering my data with lowpass filter and creating peaks envelope afterwards but I don´t think filtering is a good option since I usually do it with experimental RESULTS where I put my structure´s natural frequency in lowpass filter but I don´t think that makes sense for the INPUTS.
Those solutions are kinda weak and I´d like to know if there is any other way I can approach this? To sum up, I want to know how to create some kind of envelope which conserves the spectrum´s form and also the representative values but doesn´t fluctuate that much. Is it possible? Something that looks like the damping curves but for the load spectrum if you know what I mean.
The images below are some of the results I got from using my code and also Signal Analyzer tool
Attachments below. freq is the frequency vector and momentLS are the moment load spectras for 28 points over the structure
Thanks in advance

回答(1 个)

sai charan sampara
sai charan sampara 2023-10-11
Hello Andriy,
I understand that you are trying to get a smooth envelope for a noisy signal.
For getting the envelope of a noisy spectrum you can use the built in “envelope” function in MATLAB. The “envelope” function has an option called “peak” where a number “np” can be given a value which denotes the peak separation. Giving a larger value for peak separation gives smoother envelope. It can be done like the following code:
t = 0:1/1000:3;
q3 = chirp(t,30,2,5).*exp(-(2*t-3).^2)+2+randn(size(t));
[up,lo] = envelope(q3,40,'peak');
hold on
plot(t,up,'-',t,lo,'--','LineWidth',2)
plot(t,q3,Color='green');
hold off
In this code the numerical value in the envelope function call can be increased for even smoother curve.
You can refer to the below documentation to learn more about envelope extraction:
Hope this helps.
Thanks,
Charan.

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by