matlab 振幅谱函数,用MATLAB求周期信号的振幅谱和相位谱函数运行出错(两个)...

该博客讲述了在MATLAB中使用符号运算求解周期信号的振幅谱和相位谱过程中遇到的错误,并提供了两个程序示例。第一个程序为`gcpfbs`,用于计算方波的傅里叶级数,出现错误;第二个程序`CTFSigsym`用于计算周期矩形脉冲的幅度谱,同样存在问题。博主展示了两个程序的详细代码,并附上了运行时的错误截图。
摘要由CSDN通过智能技术生成

第一个程序:

function[A_sym,B_sym]=gcpfbs

% T      %输入信号周期

%         %函数输入输出都是数值量

% Nf     %谐波最大次数

% Nn     %输出数据的准确位数

% An     %cos项系数,第1项是直流项,以后依次为1,2,3…次谐波cos项系数

% Bn     %sin项系数,第2,3,4…元素依次是1,2,3…次谐波sin项系数

syms y n t k  %定义符号变量

T=5;

if nargin<2;Nf=input('pleas Input 所需展开的最高谐波次数');end

if nargin<3;Nn=32;end

% nargin表示输入参数个数

y=fb_symfun;

% 调用方波的符号表达式子函数,具体函数见后面的子函数

A0=2*int(y,t,0,T)/T;

% 根据定义求A0

A=int(2*y*cos(2*pi*n*t/T)/T,t,0,T);

% 求cos项系数的符号积分表达式

B=int(2*y*sin(2*pi*n*t/T)/T,t,0,T);

% 求sin项系数的符号积分表达式

An(1)=double(vpa(A0,Nn));

% 将A0的值以双精度32位形式传给An(1)

for k=1:Nf

% 循环语句,每执行一次,k加1直到等于Nf

An(k+1)=double(vpa(subs(A,n,k),Nn));

% 根据定义求An(n=2…Nf+1)

Bn(k+1)=double(vpa(subs(B,n,k),Nn));

end

% 根据定义求Bn(n=2,3,…Nf+1)

if nargout==0

% nargout表示输出参数,输出参数为零表示所有参数都已计算结束

S1=fliplr(An)

% 对An阵左右对称变换,An=[A2…A(Nf+1)],所以S1=[A(Nf+1), …A2]

S1(1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值