我不是很明白错误是怎么回事?在第18行....

错误:
??? Error using ==> sym.sym>assumptions at 2180
Second argument f not recognized.

Error in ==> sym.sym>tomupad at 2156
assumptions(S,x.s,a);

Error in ==> sym.sym>sym.sym at 114
S.s = tomupad(x,a);

Error in ==> vpa at 55
ss = sym(s,'f');

Error in ==> ex0804 at 18
A_sym(1)=double(VPA(A0,Nn));

代码:
% [ex8.4] 周期方波脉冲及单边频谱
function [A_sym,B_sym]=CTFSdbfb(T,Nf,Nn)
% 采用符号计算求[0,T]内时间函数的三角级数展开系数。
% 函数的输入输出都是数值量
% Nf 谐波的阶数
% Nn 输出数据的准确位数
% A_sym 第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数
% B_sym 第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数
syms t n k y 
T=5;
if nargin<4;Nf=input('plear Input 所需展开的最高谐波次数:');end
T=5;
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;  
N=Nf*2*pi/T;
k2=0:2*pi/T:N;
subplot(3,3,3)
x=squ_timefun(t,T) %调用连续时间函数-周期方波脉冲
T=5;t=-2*T:0.01:2*T;
plot(t,x)
title('周期方波脉冲')
axis([-10,10,-1,1.2])
line([-10,10],[0,0])
subplot(3,1,3)
stem(k2,abs(S5)); %画出周期方波脉冲的频谱(脉宽a=T/2)
title('周期方波脉冲的单边频谱')
axis([0,60,0,0.6])
end
%-------------------------------------------
function y=time_fun_s(t)
% 该函数是CTFSdbfb.m的子函数。它由符号变量和表达式写成。
syms a a1
T=5;a=T/2;
y1=sym('Heaviside(t)')*2-sym('Heaviside(t-a1)');
y=y1-sym('Heaviside(t+a1)');
y=subs(y,a1,a);
y=simple(y);

%------------------------------
function x=squ_timefun(t,T)
% 该函数是CTFSdbfb.m的子函数,它由方波脉冲函数写成。
% t 是时间数组
% T 是周期 duty'占空比':信号为正的区域在一个周期内所占的百分
T=5;t=-2*T:0.01:2*T;duty=50;
x=square(t,duty);

饮歌长啸
浏览 251回答 1
1回答

largeQ

主要是这几句有问题&nbsp;类型转换不对A_sym(1)=vpa(str2double(char(A0)),Nn);for&nbsp;k=1:Nf%&nbsp;&nbsp;&nbsp;&nbsp;A_sym(k+1)=double(vpa(subs(As,n,k),Nn));&nbsp;&nbsp;&nbsp;A_sym(k+1)=vpa(str2double(char(subs(As,n,k))),Nn);%&nbsp;&nbsp;&nbsp;&nbsp;B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));function&nbsp;[A_sym,B_sym]=CTFSdbfb(T,Nf,Nn)%&nbsp;采用符号计算求[0,T]内时间函数的三角级数展开系数。%&nbsp;&nbsp;&nbsp;&nbsp;函数的输入输出都是数值量%&nbsp;&nbsp;Nf&nbsp;&nbsp;谐波的阶数%&nbsp;Nn&nbsp;&nbsp;输出数据的准确位数%&nbsp;A_sym&nbsp;第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数%&nbsp;B_sym&nbsp;第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数syms&nbsp;t&nbsp;&nbsp;n&nbsp;&nbsp;k&nbsp;&nbsp;y&nbsp;T=5;if&nbsp;nargin<4;Nf=input('plear&nbsp;Input&nbsp;所需展开的最高谐波次数:');endT=5;if&nbsp;nargin<5;Nn=32;endy=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)=vpa(str2double(char(A0)),Nn);for&nbsp;k=1:Nf%&nbsp;&nbsp;&nbsp;&nbsp;A_sym(k+1)=double(vpa(subs(As,n,k),Nn));&nbsp;&nbsp;&nbsp;A_sym(k+1)=vpa(str2double(char(subs(As,n,k))),Nn);%&nbsp;&nbsp;&nbsp;&nbsp;B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));B_sym(k+1)=vpa(str2double(char(subs(Bs,n,k))),Nn);end&nbsp;&nbsp;&nbsp;if&nbsp;nargout==0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1=fliplr(A_sym)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%对A_sym阵左右对称交换&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1(1,k+1)=A_sym(1)&nbsp;&nbsp;&nbsp;%A_sym的1*k阵扩展为1*(k+1)阵&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S2=fliplr(1/2*S1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%对扩展后的S1阵左右对称交换回原位置&nbsp;&nbsp;&nbsp;&nbsp;S3=fliplr(1/2*B_sym)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%对B_sym阵左右对称交换&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S3(1,k+1)=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%B_sym的1*k阵扩展为1*(k+1)阵&nbsp;&nbsp;&nbsp;&nbsp;S4=fliplr(S3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%对扩展后的S3阵左右对称交换回原位置&nbsp;&nbsp;S5=S2-i*S4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N=Nf*2*pi/T;&nbsp;&nbsp;&nbsp;&nbsp;k2=0:2*pi/T:N;&nbsp;&nbsp;&nbsp;subplot(3,3,3)&nbsp;&nbsp;&nbsp;&nbsp;x=squ_timefun(t,T)&nbsp;&nbsp;&nbsp;%调用连续时间函数-周期方波脉冲&nbsp;&nbsp;&nbsp;&nbsp;T=5;t=-2*T:0.01:2*T;&nbsp;&nbsp;&nbsp;&nbsp;plot(t,x)&nbsp;&nbsp;&nbsp;&nbsp;title('周期方波脉冲')&nbsp;&nbsp;&nbsp;&nbsp;axis([-10,10,-1,1.2])&nbsp;&nbsp;&nbsp;&nbsp;line([-10,10],[0,0])&nbsp;&nbsp;&nbsp;&nbsp;subplot(3,1,3)&nbsp;&nbsp;&nbsp;&nbsp;stem(k2,abs(S5));&nbsp;&nbsp;&nbsp;%画出周期方波脉冲的频谱(脉宽a=T/2)&nbsp;&nbsp;&nbsp;&nbsp;title('周期方波脉冲的单边频谱')&nbsp;&nbsp;&nbsp;&nbsp;axis([0,60,0,0.6])&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;%-------------------------------------------function&nbsp;y=time_fun_s(t)%&nbsp;该函数是CTFSdbfb.m的子函数。它由符号变量和表达式写成。syms&nbsp;a&nbsp;a1T=5;a=T/2;y1=sym('Heaviside(t)')*2-sym('Heaviside(t-a1)');y=y1-sym('Heaviside(t+a1)');y=subs(y,a1,a);y=simple(y);%------------------------------function&nbsp;x=squ_timefun(t,T)%&nbsp;该函数是CTFSdbfb.m的子函数,它由方波脉冲函数写成。%&nbsp;t&nbsp;&nbsp;是时间数组%&nbsp;T&nbsp;&nbsp;是周期&nbsp;&nbsp;&nbsp;&nbsp;duty'占空比':信号为正的区域在一个周期内所占的百分T=5;t=-2*T:0.01:2*T;duty=50;x=square(t,duty);S1&nbsp;=&nbsp;[&nbsp;NaN,&nbsp;NaN,&nbsp;NaN]&nbsp;&nbsp;S1&nbsp;=&nbsp;[&nbsp;NaN,&nbsp;NaN,&nbsp;NaN]&nbsp;&nbsp;S2&nbsp;=&nbsp;[&nbsp;NaN,&nbsp;NaN,&nbsp;NaN]&nbsp;&nbsp;S3&nbsp;=&nbsp;[&nbsp;NaN,&nbsp;NaN,&nbsp;0]&nbsp;&nbsp;S3&nbsp;=&nbsp;[&nbsp;NaN,&nbsp;NaN,&nbsp;0]&nbsp;&nbsp;S4&nbsp;=&nbsp;[&nbsp;0,&nbsp;NaN,&nbsp;NaN]&nbsp;x&nbsp;=&nbsp;&nbsp;Columns&nbsp;1&nbsp;through&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;Columns&nbsp;13&nbsp;through&nbsp;24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;Columns&nbsp;25&nbsp;through&nbsp;36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;Columns&nbsp;37&nbsp;through&nbsp;48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、、、、、、&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP