1 回答

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
主要是這幾句有問題 類型轉(zhuǎn)換不對(duì)
A_sym(1)=vpa(str2double(char(A0)),Nn);
for k=1:Nf
% A_sym(k+1)=double(vpa(subs(As,n,k),Nn));
A_sym(k+1)=vpa(str2double(char(subs(As,n,k))),Nn);
% B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));
function [A_sym,B_sym]=CTFSdbfb(T,Nf,Nn)
% 采用符號(hào)計(jì)算求[0,T]內(nèi)時(shí)間函數(shù)的三角級(jí)數(shù)展開系數(shù)。
% 函數(shù)的輸入輸出都是數(shù)值量
% Nf 諧波的階數(shù)
% Nn 輸出數(shù)據(jù)的準(zhǔn)確位數(shù)
% A_sym 第1元素是直流項(xiàng),其后元素依次是1,2,3...次諧波cos項(xiàng)展開系數(shù)
% B_sym 第2,3,4,...元素依次是1,2,3...次諧波sin項(xiàng)展開系數(shù)
syms t n k y
T=5;
if nargin<4;Nf=input('plear Input 所需展開的最高諧波次數(shù):');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)=vpa(str2double(char(A0)),Nn);
for k=1:Nf
% A_sym(k+1)=double(vpa(subs(As,n,k),Nn));
A_sym(k+1)=vpa(str2double(char(subs(As,n,k))),Nn);
% B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));
B_sym(k+1)=vpa(str2double(char(subs(Bs,n,k))),Nn);end
if nargout==0
S1=fliplr(A_sym) %對(duì)A_sym陣左右對(duì)稱交換
S1(1,k+1)=A_sym(1) %A_sym的1*k陣擴(kuò)展為1*(k+1)陣
S2=fliplr(1/2*S1) %對(duì)擴(kuò)展后的S1陣左右對(duì)稱交換回原位置
S3=fliplr(1/2*B_sym) %對(duì)B_sym陣左右對(duì)稱交換
S3(1,k+1)=0 %B_sym的1*k陣擴(kuò)展為1*(k+1)陣
S4=fliplr(S3) %對(duì)擴(kuò)展后的S3陣左右對(duì)稱交換回原位置
S5=S2-i*S4;
N=Nf*2*pi/T;
k2=0:2*pi/T:N;
subplot(3,3,3)
x=squ_timefun(t,T) %調(diào)用連續(xù)時(shí)間函數(shù)-周期方波脈沖
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)
% 該函數(shù)是CTFSdbfb.m的子函數(shù)。它由符號(hào)變量和表達(dá)式寫成。
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)
% 該函數(shù)是CTFSdbfb.m的子函數(shù),它由方波脈沖函數(shù)寫成。
% t 是時(shí)間數(shù)組
% T 是周期 duty'占空比':信號(hào)為正的區(qū)域在一個(gè)周期內(nèi)所占的百分
T=5;t=-2*T:0.01:2*T;duty=50;
x=square(t,duty);
S1 =
[ NaN, NaN, NaN]
S1 =
[ NaN, NaN, NaN]
S2 =
[ NaN, NaN, NaN]
S3 =
[ NaN, NaN, 0]
S3 =
[ NaN, NaN, 0]
S4 =
[ 0, NaN, NaN]
x =
Columns 1 through 12
1 1 1 1 1 1 1 1 1 1 1 1
Columns 13 through 24
1 1 1 1 1 1 1 1 1 1 1 1
Columns 25 through 36
1 1 1 1 1 1 1 1 1 1 1 1
Columns 37 through 48
1 1 1 1 1 1 1 1 1 1 1 1
、、、、、、
添加回答
舉報(bào)