How to make a signal more flat ?

조회 수: 23 (최근 30일)
scaramanga
scaramanga 2012년 7월 20일
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

채택된 답변

Image Analyst
Image Analyst 2012년 7월 20일
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
Miro
Miro 2012년 7월 20일
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 2012년 7월 23일
@Miro : Your solution seems the closest from what I expect. I'm going to start from it and see where it does lead me.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Miro
Miro 2012년 7월 20일
you could use SMOOTH it provides a moving average, that makes a signal more continuous(flat)

scaramanga
scaramanga 2012년 7월 20일
편집: scaramanga 2012년 7월 20일
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.

카테고리

Help CenterFile Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by