필터 지우기
필터 지우기

Steady state data filtering

조회 수: 10 (최근 30일)
Vick
Vick 2017년 11월 3일
댓글: Greg Dionne 2017년 12월 28일
Hi,
In the above image i need to filter steady state data( 1,2,3,4), which may contain noisy data as well. Visually i can see the points stabilized at 1750,2250,3500 and 5500, but how to do that programatically. As an output i need the start and end index of the steady state points(noisy data should be removed as well). I can able to specify the tolerance as 3%.

채택된 답변

Star Strider
Star Strider 2017년 11월 3일
If you have R2016a or later, the Signal processing Toolbox findchangepts (link) function may do what you want.
  댓글 수: 2
Vick
Vick 2017년 11월 3일
Hi,
Unfortunately i don't have Signal processing toolbox in my system, but tested with my colleague's system it was working fine.
What i was thinking, to filter the data first( which removes noisy data) then use uniquetol to filter the data of unique data.
But don't know how to delete the noisy data index(without smoothing the other points). Is there any filter available of such kind?
Star Strider
Star Strider 2017년 11월 3일
I would do a fft (link) of your signal to get its spectral characteristics. It would seem that the signal transitions are low-frequency, so the high-frequency noise should be easy to filter out. If you have a signal processing background, you can use a linear-phase FIR filter with the filter (link) function to filter your signal. Probably the easiest way to do this is to ask your colleague to give you the coefficients of such a filter that meets your design requirements. (It’s been a while since I manually designed filters, so I won’t attempt to describe those calculations here.)

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

추가 답변 (1개)

Greg Dionne
Greg Dionne 2017년 12월 1일
If you have a version of MATLAB beyond R2017b you can try removing outliers with filloutliers and subsequently use ischange.
I think the following syntax is what you would want for ischange:
[TF,S1] = ischange(...) also returns information about the line segments in between change points. For example, [TF,S1] = ischange(A) returns a vector S1 containing the mean of data between change points of a vector A.
  댓글 수: 2
Vick
Vick 2017년 12월 2일
Hi Greg,
Thanks for the function filloutliers.
In this filloutilers is it possible to filter data based on threshold given by the user. In the above figure user may give plus or minus 50 as tolerance. So the y data which has steady state of 1750,2250,3500 and 5500 may take 50 as tolerance and remove data above 50. If possible can you give a rough script?
Greg Dionne
Greg Dionne 2017년 12월 28일
Hi Vick,
It seems I missed your reply. Hopefully you've worked past this issue, but if not, could you post your data?

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

카테고리

Help CenterFile Exchange에서 Matched Filter and Ambiguity Function에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by