赞
踩
matlab2016a
使用Matlab生成任意波形发生器(AWG)所需波形文件,使得任意波形发生器产生你所需波形,本文使用高斯脉冲来举例。
%任意波形发生器输入波形程序 Num1Period=100; %在任意波形发生器一个脉冲周期的点数 Fs=16e9; %任意波形发生器的采样率16G Sa/s Ts=1/Fs; ContinueTime=Ts*Num1Period %总共2400个点,有24个周期的脉冲,100点一个周期,6.25e-9 s= 6.25ns一个周期 Freq=1/ContinueTime%脉冲频率160MHz %高斯脉冲参数 t=linspace(-ContinueTime/2,ContinueTime/2,Num1Period); Lenth_t=length(t); tao=ContinueTime/10; t0=0; Info=[1,0,1,0,0,1,1,1,0,1,1,0,1,0,0,1,1,1,0,1,1,0,1,1]; %2400个点,有24个脉冲波形 InfoBitNum=numel(Info); MSign=zeros(InfoBitNum,Lenth_t); %%%二阶高斯脉冲,PAM调制的0编码对应的波形 y0=(-0.5).*(t.^2-tao.^2).*exp(-1.*((t-t0)/tao).^2)./(((2*pi).^(1/2)).*(tao.^5)); y0=y0./max(y0)/2; %%%二阶高斯脉冲,PAM调制的1编码对应的波形 y=(-1).*(t.^2-tao.^2).*exp(-1.*((t-t0)/tao).^2)./(((2*pi).^(1/2)).*(tao.^5)); y=y./max(y); figure subplot(2,1,1) plot(t,y) grid on axis([-ContinueTime/2,ContinueTime/2,-0.2,1]) xlabel('t') ylabel('y') for i=1:InfoBitNum if Info(i)==1 MSign(i,:)=repmat(y,1); else MSign(i,:)=repmat(y0,1); end end MSignDisplay=MSign.'; MSignDisplay=MSignDisplay(:); csvwrite('AWG.csv',MSignDisplay);%输出为.csv文件,改后缀名 MSignDisplay=MSignDisplay.'; tDisplay=linspace(0,ContinueTime*InfoBitNum,Num1Period*InfoBitNum); subplot(2,1,2) plot(tDisplay,MSignDisplay) grid on axis([0,ContinueTime*InfoBitNum,-0.2,1]) xlabel('t') ylabel('AWGwave')
由图上分别展示了你所生成的单个波形的图和1,0,1,0,0,1,1,1,0,1,1,0,1,0,0,1,1,1,0,1,1,0,1,1的PAM调制后的波形
也生成了.csv文件,根据AWG所需的文件格式和内容格式修改。
内容可能存在疏漏,仅供参考,欢迎评论区指出
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。