>> clear
N=12;
i=1:N; %傅氏滤波系数
hs(i)=sin(2*pi*i/N);
hc(i)=cos(2*pi*i/N);
for p=1:(N/2+1)*10; %谐波次数*10
for k=1:N+N/2; %采样点数
for i=1:4; %初相角
a(i)=pi*(i-1)/6;
y(:,:,i)=sin(a(i)+(2*pi/N)*(k-1)*(p-1)/10);
end
s(:,k,:)=y;
end
w(p,:,:)=s;
end
for p=1:(N/2+1)*10; %谐波次数
for i=1:4; %初相角
x1=w(p,i,:); %三维数组
x2=xl(:); %一维数组
ys=filter(hs,1,x2); %傅氏滤波:正弦系数
yc=filter(hc,1,x2); %傅氏滤波:余弦系数
ym=2*sqrt(ys.^2+yc.^2)/N; %幅值
s1(:,i)=ym(N+N/2);
end
w1(p,:)=s1;
end
y1=wl(:,1);y2=wl(:,2);
y3=wl(:,3);y4=wl(:,4);
[m,n]=size(y1);
k=0:0.1:(m-1)/10;
subplot(221);
polt(k,y1);axis([0,6,0,1.2]);legend('a=0*pi');grid
xlabel('f/f0');ylabel('h');
subplot(223);
polt(k,y2);axis([0,6,0,1.2]);legend('a=pi/6');grid
xlabel('f/f0');ylabel('h');
subplot(222);
polt(k,y3);axis([0,6,0,1.2]);legend('a=pi/3');grid
xlabel('f/f0');ylabel('h');
subplot(224);
polt(k,y4);axis([0,6,0,1.2]);legend('a=pi/2');grid
xlabel('f/f0');ylabel('h');
??? Undefined variable xl.
经过一个小时的错误排查,程序调好了,现在运行正常,主要有两种错误,后面细说
1.首先给出生成的图如下:
2. 错误一:
将这一句 x2=xl(:);
改为 for j=1:18
x2(j)=x1(:,:,j); %一维数组
end
3. 错误二:
后面的4个plot, 你都错误地写成了 polt
此处在调试的时候,出现了错误,让我迷惑了一会儿,后来发现是这个小错误
4. 代码贴出来,你可以复制后 试一试,我在matlab2010a上运行通过
clc;
clear all;
N=12;
i=1:N; %傅氏滤波系数
hs(i)=sin(2*pi*i/N);
hc(i)=cos(2*pi*i/N);
for p=1:(N/2+1)*10; %谐波次数*10
for k=1:N+N/2; %采样点数
for i=1:4; %初相角
a(i)=pi*(i-1)/6;
y(:,:,i)=sin(a(i)+(2*pi/N)*(k-1)*(p-1)/10);
end
s(:,k,:)=y;
end
w(p,:,:)=s;
end
% [sa sb sc]=size(w)
% x1=zeros(70,4,18);
% w1=zeros(70,4);
for p=1:(N/2+1)*10; %谐波次数
for i=1:4; %初相角
x1=w(p,i,:); %三维数组
% x2=xl(:);
for j=1:18
x2(j)=x1(:,:,j); %一维数组
end
ys=filter(hs,1,x2); %傅氏滤波:正弦系数
yc=filter(hc,1,x2); %傅氏滤波:余弦系数
ym=2*sqrt(ys.^2+yc.^2)/N; %幅值
s1(:,i)=ym(N+N/2);
end
w1(p,:)=s1;
end
y1=w1(:,1);
y2=w1(:,2);
y3=w1(:,3);
y4=w1(:,4);
[m,n]=size(y1);
k=0:0.1:(m-1)/10;
subplot 221;
plot(k,y1); axis([0,6,0,1.2]);legend('a=0*pi');grid
xlabel('f/f0');ylabel('h');
subplot 223;
plot(k,y2);axis([0,6,0,1.2]);legend('a=pi/6');grid
xlabel('f/f0');ylabel('h');
subplot 222;
plot(k,y3);axis([0,6,0,1.2]);legend('a=pi/3');grid
xlabel('f/f0');ylabel('h');
subplot 224;
plot(k,y4);axis([0,6,0,1.2]);legend('a=pi/2');grid
xlabel('f/f0');ylabel('h');
5. 如果有帮助,望采纳,我也用了一个小时的调试啊,呵呵,如有问题,欢迎继续讨论