加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MATLAB方波模拟和频谱图

(2015-10-08 08:53:39)
标签:

信号

matlab

方波

模拟f1=12.5M的信号A和f2=10M的信号B,每周期为N=16倍数个点,总周期为T=512个的两个方波信号
为使两信号采样频率一致,先取两频率的最小公倍数ff=50M,则A信号每周期为A=ff/f1=4个点,B信号每周期为B=ff/f2=5个点,为取更多的点,将点数均放大N=16倍
N1=N*A=16*4=64; %每周期64个点
Fs1=N1*f1=64*12.5=800; %A采样频率
length1=N1*T=64*512=32768; %A信号总长度
N2=N*B=16*5=80;
Fs2=N2*f2=80*10=800; %B采样频率
length2=N2*T=80*512=40960;

d和80的公倍数为320,那A信号取500个周期,总长度为500*64=32000,B信号取400周期,总长度为400*80=32000
length=32000;  %取两信号的公倍数长度为信号长度(选公倍数用来保证同样长度的两个信号都是整周期)
Fs=Fs1=Fs2; %采样频率一致

n=0:1:length-1;
t=n/Fs;

y1=square(2*pi*f1*t,50);
y2=square(2*pi*f2*t,50);
for i=1:length
if y1(i)==-1
y1(i)=0;
end
if y2(i)==-1
y2(i)=0;
end
end
plot(t,y1); %A信号图
plot(t,y2(1:length)); %B信号图,同等长度

f=(0:length-1)*Fs/length;
mag1=abs(fft(y1))*2/length;
plot(f(1:length/2),mag1(1:length/2)); %A频谱图

mag2=abs(fft(y2(1:length)))*2/length;
plot(f(1:length/2),mag(1:length/2)); %B频谱图

y3=y1&y2(1:length);
plot(t,y3); %A信号与B信号相乘后的信号图
mag3=abs(fft(y3))*2/length;
plot(f(1:length/2),mag(1:length/2)); %A信号与B信号相乘后的频谱图




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有