数字调制(ASK、FSK、PSK)例程分享:
2ASK(二进制幅移键控)又称OOK
复制function复制askdigital(s,f)
复制% 实现ASK调制
复制% s——输入二进制序列;f——载波的频率,即:一个码元周期包括f个载波周期
复制% 调用举例:askdigital([1 0 1 1 0], 2)
复制t=0:2*复制pi复制/99:2*复制pi复制;复制%初始化定义,1*100的矩阵
复制cp=[];复制mod复制=[];bit=[];
复制for复制n=1:复制length复制(s);复制% 调制过程
复制复制if复制s(n)==0;
复制复制bit1=复制zeros复制(1,100);复制% 100是码元周期
复制复制else复制% s(n)==1;
复制复制bit1=复制ones复制(1,100);
复制复制end
复制复制c=复制sin复制(f*t);
复制复制mod复制=[复制mod复制c];
复制复制bit=[bit bit1];
复制end
复制ask=bit.*复制mod复制;
复制subplot复制(2,1,1);
复制plot复制(bit,复制k复制,复制LineWidth复制,1);复制grid复制on;
复制ylabel复制(复制Binary Signal复制);
复制axis复制([0 100*复制length复制(s) -2.5 2.5]);
复制subplot复制(2,1,2);
复制plot复制(ask,复制k复制,复制LineWidth复制,1);复制grid复制on;
复制ylabel复制(复制ASK modulation复制);
复制axis复制([0 100*复制length复制(s) -2.5 2.5]);
2FSK:‘1’对应频率为ω1ω1的载波,‘0’对应频率为ω2ω2
的载波。
复制function复制fskdigital(s,f0,f1)
复制% 实现 FSK 调制
复制% s——输入二进制序列 f0,f1——两个不同频率的载波
复制% 调用举例 (f0 f1 必须是整数) : fskdigital([1 0 1 1 0],1,2)
复制t=0:2*复制pi复制/99:2*复制pi复制;复制%初始化定义
复制cp=[];复制mod复制=[];bit=[];
复制for复制n=1:复制length复制(s);复制% 调制过程
复制复制if复制s(n)==0;
复制复制cp1=复制ones复制(1,100);
复制复制c=复制sin复制(f0*t);
复制复制bit1=复制zeros复制(1,100);
复制复制else复制%s(n)==1;
复制复制cp1=复制ones复制(1,100);
复制复制c=复制sin复制(f1*t);
复制复制bit1=复制ones复制(1,100);
复制复制end
复制复制cp=[cp cp1];
复制复制mod复制=[复制mod复制c];
复制复制bit=[bit bit1];
复制end
复制fsk=cp.*复制mod复制;
复制% fsk = mod;
复制subplot复制(2,1,1);
复制plot复制(bit,复制k复制,复制LineWidth复制,1);复制grid复制on;
复制ylabel复制(复制Binary Signal复制);
复制axis复制([0 100*复制length复制(s) -2.5 2.5]);
复制subplot复制(2,1,2);
复制plot复制(fsk,复制k复制,复制LineWidth复制,1);复制grid复制on;
复制ylabel复制(复制FSK modulation复制);
复制axis复制([0 100*复制length复制(s) -2.5 2.5]);
或用Matlab提供的函数fskmod
调用格式y= fskmod(x,M,freq_sep,nsamp);
y=fskmod(x,M,freq_sep,nsamp,Fs);
参数说明x:消息信号
M:表示消息的符号数,必须是2的整数幂,M进制信号(0~M-1)
freq_sep:两载波之间的频率间隔,单位Hz
nsamp:输出信号的采样数,必须是大于1的正整数
Fs:根据奈奎斯特采样定理,(M-1)*freq_seq <= Fs
复制M=2;freqsep=8;nsamp=8;Fs=32;
复制x=复制randi复制([0,M-1],1000,1);
复制y=fskmod(x,M,freqsep,nsamp,Fs);
复制ly =复制length复制(y);
复制%画2FSK的信号频谱
复制freq= -Fs/2:Fs/ly : Fs/2-Fs/ly;
复制Syy =复制fftshift复制(复制abs复制(复制fft复制(y)));
复制plot复制(freq,Syy)
PSK
复制function复制bpskdigital( s, f )
复制%实现BPSK
复制% s:输入二进制序列,f:载波信号的频率(一个码元有几个载波周期)
复制% 调用举例:bpskdigital([1 0 1 1 0], 2)
复制复制t = 0:2*复制pi复制/99:2*复制pi复制;
复制复制cp = [];
复制复制mod复制= []; bit = [];
复制复制for复制n=1:复制length复制(s)
复制复制if复制s(n) == 0
复制复制cp1 = -复制ones复制(1,100);
复制复制bit1 =复制zeros复制(1,100);
复制复制else复制%s(n)==1
复制复制cp1 =复制ones复制(1,100);
复制复制bit1 =复制ones复制(1,100);
复制复制end
复制复制c=复制sin复制(f*t);
复制复制cp = [cp,cp1];
复制复制mod复制= [复制mod复制,c];
复制复制bit = [bit,bit1];
复制复制end
复制复制bpsk = cp .*复制mod复制;
复制复制subplot复制(211);
复制复制plot复制(bit,复制LineWidth复制,1.5);
复制复制grid复制on;
复制复制ylabel复制(复制Binary Signal复制);
复制复制axis复制([0 100*复制length复制(s) -2.5 2.5]);
复制复制subplot复制(212);
复制复制plot复制(bpsk,复制LineWidth复制,1.5);
复制复制grid复制on;
复制复制ylabel复制(复制BPSK modulation复制);
复制复制axis复制([0 100*复制length复制(s) -2.5 2.5]);
复制end
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:数字调制(ASK、FSK、PSK)例程分享-数字调制怎么实现 https://www.yhzz.com.cn/a/7412.html