How do I filter my data points without using smoothdata?

I have 2 variables, t and y, which are both vectors. What I want to do is smooth the data so that, for example, if t is a 10x1 vector, it becomes a 5x1 vector comprising an average of the data points around it. How do I go about this without using the smoothdata function?
Thank you very much and kind regards,
Tom

2 件のコメント

Bob Thompson
Bob Thompson 2018 年 12 月 11 日
I'm sure there's a better way, but you could do this manually using a for loop and interpolation.
t2 = linspace(t(1),t(end),5);
for i = 1:5;
y2(i) = interp1(t,y,t2(i));
end
Chad Greene
Chad Greene 2018 年 12 月 11 日
Note: Interpolation without smoothing or lowpass filtering first could result in aliasing.

サインインしてコメントする。

回答 (2 件)

Chad Greene
Chad Greene 2018 年 12 月 11 日

0 投票

What about movmean to smooth the data, then interp1 to pick out the 5 points you want?

2 件のコメント

Thomas Nell
Thomas Nell 2018 年 12 月 12 日
Is movmean part of the signal processing toolbox??? I'm not allowed to use any functions from there
Image Analyst
Image Analyst 2018 年 12 月 12 日
No, it's part of base MATLAB. If you get help on any function, it will tell you what toolbox it's in, if any.

サインインしてコメントする。

Image Analyst
Image Analyst 2018 年 12 月 12 日
編集済み: Image Analyst 2018 年 12 月 12 日

0 投票

You could use conv() to smooth y.
windowWidth = 5;
kernel = ones(1, windowWidth) / windowWidth;
smoothedY = conv(y, kernel, 'valid'); % conv() is in base MATLAB.
Do NOT smooth t, for obvious reasons.

カテゴリ

ヘルプ センター および File ExchangeFourier Analysis and Filtering についてさらに検索

タグ

質問済み:

2018 年 12 月 11 日

編集済み:

2018 年 12 月 12 日

Community Treasure Hunt

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

Start Hunting!

Translated by