matlab - How to make a vector that follows a certain trend? -
I have a set of data over 4000 digits. I want to exclude grooves from them, ideally from the point where they start, the data looks like this for example:
I noise on top of me plateaus with this problem, I have an idea, which I most common within certain limits (Again, like red color, here's an ideal place:
And then I will create a temporary matrix, which will fill y with one by one, if they are less than this average if wi (i) rises above average , the matrix should have a Nuntmtm and will be compared with the global minimum. If the minimum level of 80% of the temporary matrix will not be the same as the global minimum, it will be discarded as noise.
I have tried (y) in Clubs, a polynomial (green line) in the lid between each other and fitting - no one will take it until the point of those ways, I will not be satisfied.
I need this to be very strong and there is no need to accelerate it. The values at the top and bottom can be very different, as well as the size of plateaus. The width of the drain is more or less uniform. / P>
Do you have any ideas? Then, the point is that remove the values that you want to make the groove.
How about?
Let's define some noise data like you, and plot it in blue:
x = .2 * sin ((0: 99 99) / 1000 ); % // signal x (1000: 10 99) = x (1000: 10 99) + sin ((0:99) / 50 * pi); % // Noise: Spike x (5000: 5199) = x (5000: 5199) - Sin ((0: 199) / 100 * pi); % // Noise: Comprehensive spike x = x +05 * sin ((0: 99 99 / / 10); % / Noise: High-Freeware wave plot (x) Now apply plots in the middle image (using the image processing toolbox) and red. The parameter k controls the filter, it should be larger than the noise variables, and smaller than the signal variations: k = 500; Choose% // filter memory as required y = medfilt2 (x, [1 k]); Place on plot (y, 'r', 'linewidth', 2)
Comments
Post a Comment