フィルターのクリア

Info

この質問は閉じられています。 編集または回答するには再度開いてください。

How much a signal curves

1 回表示 (過去 30 日間)
KADEM Mohamed
KADEM Mohamed 2016 年 3 月 9 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
I asked a question earlier in : math.stackexchange, It was the follwing :
I have a random signal, and i need a way in simulink to find how much this signal curves (the result will be a signal also proportional to how much the first one will curves, it doesn't matter if it's going up or down, all i care about if how much it curves).
In the answer the guy said i should use a double derivative or an integrator ? i tried, but it doesn't seem to work.
  3 件のコメント
John BG
John BG 2016 年 3 月 10 日
do you mean you want the Simulink amplifier? or the Simulink block d/dt ?
John D'Errico
John D'Errico 2016 年 3 月 10 日
Is the signal noisy? If so, then you probably want to use a Savitsky-Golay filter to estimate the local second derivative of your series. Take the absolute value of that second derivative. Where it is large, your function is curved.
In MATLAB, conv can do the work. I have no idea how to make it work in simulink.
If you need to know how to calculate the coefficients of the corresponding kernel, that part is easy enough.

回答 (1 件)

John D'Errico
John D'Errico 2016 年 3 月 10 日
編集済み: John D'Errico 2016 年 3 月 10 日
In MATLAB, I would do this:
n = (-5:5)';
A = [n.^2,n,ones(size(n))];
P = pinv(A);
SGfilt = P(1,:)/2
SGfilt =
0.0087413 0.0034965 -0.00058275 -0.0034965 -0.0052448 -0.0058275 -0.0052448 -0.0034965 -0.00058275 0.0034965 0.0087413
d2 = conv(Y,SGfilt,'valid');
plot(d2)
Where the result is large, the function is curved.
Note that noise will tend to be amplified, so on noisy data, you need to use a longer convolution kernel. Thus, n must have a larger span when the noise will be large.

この質問は閉じられています。

Community Treasure Hunt

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

Start Hunting!

Translated by