You have )))+.4*randn . That is one too many ) at that point, should be ))+.4*randn
Moving average filter problem.
2 次查看(过去 30 天)
显示 更早的评论
I have an assignment that wants me to create a moving average filter using no filter functions coded into matlab.
gr is a waveform being run through the filter. It is a fourier approximation for a square wave 4/pi * SUM(sin((i*pi)/2)*(400*t+1) where i = {1,3,5,7,9}. gr also must have some .4*randn(size(t)) added to it.
The equation for an M point moving average filter is y(n) = 1/M * SUM from k=0 to k=M-1(x(n-k))
I'm doing something wrong with my indexing and I can't tell where :(
%Assignment 9 - Moving Average Filter
fs = 10000;
M = 8;
t = 0:1/fs:.05;
g1 = (4/pi)*sin((pi/2)*((400*t)+1))+.4*randn(size(t));
g3 = (4/pi)*(1/3)*sin((3*pi/2)*((400*t)+1))+.4*randn(size(t));
g5 = (4/pi)*(1/5)*sin((5*pi/2)*((400*t)+1))+.4*randn(size(t));
g7 = (4/pi)*(1/7)*sin((7*pi/2)*((400*t)+1))+.4*randn(size(t));
g9 = (4/pi)*(1/9)*sin((9*pi/2)*((400*t)+1))+.4*randn(size(t));
gr = g1 + g3 + g5 + g7 + g9 + .4*randn(size(t));
y = zeros(M,length(t));
for i = 1:M
if i == 1
y(i) = sum(gr);
else
y(i) = sum((4/pi)*sin((pi/2)*((400*(t-i)+1)))+ (4/pi)*(1/3)*sin((3*pi/2)*((400*(t-i)+1)))+ (4/pi)*(1/7)*sin((7*pi/2)*((400*(t-i)+1)))+ (4/pi)*(1/9)*sin((9*pi/2)*((400*(t-i))+1)))+.4*randn(size(t)));
end
end
plot(t,y)
0 个评论
回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Frequency Transformations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!