How to make a signal more flat ?

Hello,
I have a signal which looks like a dome and I would like to make it flat (hence reducing its amplitude). I can reduce the amplitude by dividing the whole signal by the same amount, but I would like to be able to control the amount of reduction I do on each signal location. Any idea of what kind of operation i should use ?
Regards

 Akzeptierte Antwort

Image Analyst
Image Analyst am 20 Jul. 2012

0 Stimmen

You can subtract the mean
newSignal = yourSignal - mean(yourSignal);
Then multiply by the array that contains the reduction factors that varies as a function of location:
flattenedSignal = reductionFactors .* newSignal;
Note, you must have reductionFactors because you said "I would like to be able to control the amount of reduction I do on each signal location" so you obviously know what those reductions are. Then finally add back in the mean:
finalSignal = flattenedSignal + mean(yourSignal);

3 Kommentare

scaramanga
scaramanga am 20 Jul. 2012
No I don't even have an "explicit" function to perform the reduction. I was thinking of computing it directly from the signal. The higher the amplitude is, the higher the reduction is, but I don't know how compute the reduction factor, that's what I'm asking actually...
Miro
Miro am 20 Jul. 2012
this depends on the theoretical background of the data. I mean sure, you can just cut the signal fe. like:
ref = yoursignal/max(yoursignal);
newSignal = yoursignal*exp(-ref);
in this case larger signals get cutted more than smaller ones relative to the maximum of the signal.
scaramanga
scaramanga am 23 Jul. 2012
@Miro : Your solution seems the closest from what I expect. I'm going to start from it and see where it does lead me.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Miro
Miro am 20 Jul. 2012

0 Stimmen

you could use SMOOTH it provides a moving average, that makes a signal more continuous(flat)
scaramanga
scaramanga am 20 Jul. 2012
Bearbeitet: scaramanga am 20 Jul. 2012

0 Stimmen

It won't be enough. I give you a picture of my signal : http://www.imagup.com/data/1157449109.html, Basically I want that it fluctuates around ~0.35.

Kategorien

Mehr zu Simulink finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by