大家帮看看这个MATlab的程序 哪里错了

>> 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. 如果有帮助,望采纳,我也用了一个小时的调试啊,呵呵,如有问题,欢迎继续讨论

温馨提示:答案为网友推荐,仅供参考
相似回答