通信人家园

标题: 大神们,这段MSK调制代码是不是哪里有问题?  [查看完整版帖子] [打印本页]

时间:  2020-5-2 17:21
作者: 用户名已输入     标题: 大神们,这段MSK调制代码是不是哪里有问题?

%MSK调制函数
function [I_out,Q_out] = mod_msk(data,data_len,sample_number,Rb)   
Tb = 1/Rb;                         %码元周期
fs = Rb*sample_number;      %采样速率
[data_diff] = difference(data);  %差分编码
I(1) = 1;                                %串并转换
for i = 1:2:data_len  
    Q(i) = data_diff(i);  
    Q(i+1) = data_diff(i);  
end  
for i = 2:2:data_len  
    I(i+1) = data_diff(i);  
    I(i) = data_diff(i);  
end  
  
for i = 1:sample_number           %采样
    I1(i:sample_number:data_len*sample_number) = I(1:data_len);  
    Q1(i:sample_number:data_len*sample_number) = Q(1:data_len);  
end  
t=1/fs:1/fs:data_len*Tb;  
I_out = I1 .* cos(pi*t/2/Tb);    %乘上加权函数
Q_out = Q1 .* sin(pi*t/2/Tb);  %乘上加权函数


%主函数
data_len = 10000;                 %码元个数
sample_number = 8;             %每个码元的采样点数
Rb = 24000;                         %码率
fc = 96000;                         %载波频率
data=rand_binary(data_len); %随机数发生器
[I_out,Q_out] = mod_msk(data,data_len,sample_number,Rb);   %MSk调制
multi = fc/Rb;  
I_temp=interp(I_out,multi);  
Q_temp=interp(Q_out,multi);   
Fs=fc*sample_number;  
t=1/Fs:1/Fs:length(I_temp)*1/Fs;  
signal_i=I_temp.*cos(2*pi*fc*t);          %乘上载波
signal_q=Q_temp.*sin(2*pi*fc*t);       %乘上载波
signal_mod=I_temp.*cos(2*pi*fc*t)-Q_temp.*sin(2*pi*fc*t);    %调制信号生成
plot(t,signal_mod)

这是网上找的一段代码,但是运行出来的图和正常的MSK调制图不一样,是不是哪里需要修改?应该怎么改?
这是运行图 捕获1.PNG


附件: 捕获1.PNG (2020-5-2 17:20, 12.23 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=NDM4ODAyfDBmY2YxNTA2fDE3MzI0NjMxNzh8MHww
时间:  2020-5-2 17:51
作者: 用户名已输入

有能帮忙解释一下吗?




通信人家园 (https://www.txrjy.com/) Powered by C114