matlab生成任意波形发生器(AWG)所需波形文件程序
环境
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所需的文件格式和内容格式修改。
内容可能存在疏漏,仅供参考,欢迎评论区指出