用matlab绘制出周期锯齿波信号的振幅频谱,代码总出现错误

代码:
syms t n y
if nargin<3;
Nf=100;
end
T=10;
if nargin<5;
Nn=32;
end
y=time_fun_s(t);
A0=2*int(y,t,0,T)/T;
As=int(2*y*cos(2*pi*n*t/T)/T,t,0,T);
Bs=int(2*y*sin(2*pi*n*t/T)/T,t,0,T);
A_sym(1)=double(vpa(A0,Nn));
for k=1:Nf
A_sym(k+1)=double(vpa(subs(As,n,k),Nn));
B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));
end
if nargout==0
S1=fliplr(A_sym)%对A_sym阵左右对称变换
S1(1,k+1)=A_sym(1)%A_sym的1*k阵扩展为1*(k+1)阵
S2=fliplr(1/2*S1)%对扩展后的s1阵左右对称交换回原位置
S3=fliplr(1/2*B_sym)%对B_sym阵左右对称交换
S3(1,k+1)=0%对B_sym的1*k阵扩展为1*(k+1)阵
S4=fliplr(S3)%对扩展后的S3阵左右对称交换回原位置
S5=S2-i*S4;
S6=fliplr(S5);
N=Nf*2*pi/T;
k2=-N:2*pi/T:N;
S7=[S6,S5(2:end)];
subplot(2,1,1)
stem(k2,abs(S7));%画出周期锯齿脉冲的频谱
grid on
tide('连续时间函数周期锯齿脉冲的双边幅度谱')
line([-8*Nf/T,8*Nf/T],[0,0])
line([0,0],[0,1.1/T])
axis([-80*Nf/T,80*Nf/T,-0.1/T,1.1/T])
subplot(2,1,2)
time_fun_e(t)%调用连续时间函数-周期锯齿脉冲
end

新建:time_fun_s.m
function y=time_fun_s(t)
syms t
T=10;
y=(sym('Heaviside(t)-Heaviside(t-1)'))*(-t/T+1);
y=simple(y);
总是有错误,却不知道怎么改,求教大神

%产生峰值为1的三角波,分析其0~63次谐波的幅值谱和相位谱 clf; Fs =128; %采样频率 T = 1/Fs; % 采样周期 N = 128; % 采样点数 t = (0:N-1)*T; % 时间,单位:S x=zeros(N); for n=0:N-1 b=fix((n)/(N/4)); m=n+1; A=1/(N/4); if b==0 x(m)=A*n; elseif b==1||b==2 x(m)=A*(N/2-n); elseif b==3 x(m)=A*(n-N); end; end; n=0:N-1; subplot(3,1,1) plot(t,x); xlabel('时间/S'); ylabel('振幅');title('时域波形');grid on; y=fft(x,N); %对信号进行快速Fourier变换 mag=abs(y)*2/N; %求取Fourier变换的振幅;*2/N转变为真实幅值 f=n*Fs/N; subplot(3,1,2) plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('幅值谱');grid on; p=mod(angle(y)*180/pi,360); subplot(3,1,3) plot(f(1:N/2),p(1:N/2)); %绘出Nyquist频率之前随频率变化的相位 xlabel('频率/Hz'); ylabel('振幅');title('相位谱');grid on;
温馨提示:答案为网友推荐,仅供参考