matlab仿真模块中通信仿真中MSK模块可以用什么普通模块代替?

查看: 188|回复: 0|关注: 0
【求助!】MSK信号的产生,选择器和载波模块参数怎么设置
急,求帮助
站长推荐 /1
Powered by基于MATLAB的MSK系统的仿真研究_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于MATLAB的MSK系统的仿真研究
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩27页未读,继续阅读
你可能喜欢2643人阅读
function out = delay(data,n,sample_number)
%data:延迟的数据
%n:延迟码元个数
%sample_number:码元采样个数
out = zeros(1,length(data));
out(n*sample_number+1:length(data)) = data(1:length(data)-n*sample_number);
function [data_diff] = difference(data)
%**************************************************************************
%data&&&&&&&&&& 输入信号
%data_diff&&&&& 差分编码后信号
%**************************************************************************
%--------------------------------------------------------------------------
data_diff = zeros(1,length(data));
data_diff(1) = 1 * data(1);&& %1为差分编码的初始参考值
for i = 2:length(data)
&&& data_diff(i) = data_diff(i-1) * data(i);
%**************************************************************************
function [signal_out,I_out,Q_out] = mod_msk(data,data_len,sample_number,Rb)
%MSK基带调制
%**************************************************************************
% data&&&&&&&&&&&&& 调制信号
% data_len&&&&&&&&& 码元个数
% sample_number&&&& 每个码元采样点数
% Rb&&&&&&&&&&&&&&& 码元速率
% signal_out&&&&&&& 基带调制输出
% I_out&&&&&&&&&&&& I路输出
% Q_out&&&&&&&&&&&& Q路输出
%**************************************************************************
% data_len = 10;&&&&&&&&&&&&&&& %码元个数
% sample_number = 8;&&&&&&&&&&& %采样点数
% Rb = 16000;&&&&&&&&&&&&&&&&&& %码元速率
% data1 = randint(1,data_len);
% data = 2*data1-1;&&&&&&&&&&&& %传输的序列
Tb = 1/Rb;&&&&&&&&&&&&&&&&&&&&& %码元时间
fs = Rb*sample_&&&&&&&&& %采样速率
%--------------------------------------------------------------------------
[data_diff] = difference(data);
%**************************************************************************
%--------------------------------------------------------------------------
%并串转换,延时
I(1) = 1;&&&&&&&&&&&& %fai0 = 0,cos(fai0) = 1
for i = 1:2:data_len
&&& Q(i) = data_diff(i);
&&& Q(i+1) = data_diff(i);
for i = 2:2:data_len
&&& I(i+1) = data_diff(i);
&&& I(i) = data_diff(i);
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);
%**************************************************************************
%--------------------------------------------------------------------------
%乘加权函数
t=1/fs:1/fs:data_len*Tb;
I_out = I1 .* cos(pi*t/2/Tb);
Q_out = Q1 .* sin(pi*t/2/Tb);
%**************************************************************************
%--------------------------------------------------------------------------
%调制信号产生
signal_out = I_out + j*Q_
%**************************************************************************
% %--------------------------------------------------------------------------
% subplot(221)
% plot(data,'.-');title('MSK传输的数据');xlabel('时间');ylabel('幅度')
% subplot(222)
% plot(data_diff,'.-');title('差分后的数据');xlabel('时间');ylabel('幅度')
% subplot(223)
% plot(I1,'.-');title('加权前I路');xlabel('时间');ylabel('幅度');
% subplot(224)
% plot(Q1,'.-');title('加权前Q路');xlabel('时间');ylabel('幅度');
% figure(2)
% subplot(221)
% plot(cos(pi*t/2/Tb),'.-');title('加权函数cos(&t/(2Tb))');xlabel('时间');ylabel('幅度')
% subplot(222)
% plot(sin(pi*t/2/Tb),'.-');title('加权函数sin(&t/(2Tb))');xlabel('时间');ylabel('幅度')
% subplot(223)
% plot(I_out,'.-');title('加权后I路');xlabel('时间');ylabel('幅度');
% subplot(224)
% plot(Q_out,'.-');title('加权后Q路');xlabel('时间');ylabel('幅度');
% %**************************************************************************
function [signal_out,I_out,Q_out,phase] = mod_msk2(data,data_len,sample_number,Rb)
%MSK基带调制
%**************************************************************************
% data&&&&&&&&&&&&& 调制信号
% data_len&&&&&&&&& 码元个数
% sample_number&&&& 每个码元采样点数
% Rb&&&&&&&&&&&&&&& 码元速率
% signal_out&&&&&&& 基带调制输出
% I_out&&&&&&&&&&&& I路输出
% Q_out&&&&&&&&&&&& Q路输出
%**************************************************************************
% data_len = 10;&&&&&&&&&&&&&&& %码元个数
% sample_number = 8;&&&&&&&&&&& %采样点数
% Rb = 16000;&&&&&&&&&&&&&&&&&& %码元速率
% data1 = randint(1,data_len);
% data = 2*data1-1;&&&&&&&&&&&& %传输的序列
Tb = 1/Rb;&&&&&&&&&&&&&&&&&&&&& %码元时间
fs = Rb*sample_&&&&&&&&& %采样速率
%--------------------------------------------------------------------------
for i = 1:sample_number
&&& data_sample(i:sample_number:data_len*sample_number) =
%**************************************************************************
%--------------------------------------------------------------------------
phase = zeros(1,data_len*sample_number);
phase(1) = data_sample(1) * pi/2/sample_
for i = 2:data_len*sample_number
&&& phase(i) = phase(i-1) + data_sample(i-1) * pi/2/sample_
%**************************************************************************
%--------------------------------------------------------------------------
I_out = cos(phase);
Q_out = sin(phase);
%**************************************************************************
%--------------------------------------------------------------------------
%调制信号产生
signal_out = I_out + j*Q_
%**************************************************************************
%MSK调制,差分解调方法一
%--------------------------------------------------------------------------
data_len = 10000;&&&&&&&&&& %码元个数
sample_number = 8;&&&&&&&&& %采样个数
Rb = 24000;&&&&&&&&&&&&&&&& %码元速率
fc = 96000;&&&&&&&&&&&&&&&& %载波频率
%**************************************************************************
%--------------------------------------------------------------------------
%随机产生传输信号
data=rand_binary(data_len);
%**************************************************************************
%--------------------------------------------------------------------------
%MSK基带调制
[signal_out,I_out,Q_out] = mod_msk(data,data_len,sample_number,Rb);
%**************************************************************************
%--------------------------------------------------------------------------
multi = fc/Rb;
I_temp=interp(I_out,multi);
Q_temp=interp(Q_out,multi);
Fs=fc*sample_
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);
%**************************************************************************
%--------------------------------------------------------------------------
for SNR = 0:8
signal_mod1 = awgn(signal_mod,SNR);
&&& %--------------------------------------------------------------------------
&&& %去载波
&&& N=300;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& % 滤波器的阶数为(N+1)&&
&&& F=[0,fc-1000,fc+1000,Fs/2]*2/Fs;
&&& A=[1,1,0,0];
&&& lpf=firls(N,F,A);
&&& [amp_lpf,w]=freqz(lpf);
&&& I_dem=signal_mod1.*cos(2*pi*fc*t)*2;
&&& I_dem=conv(I_dem,lpf);
&&& I_dem=I_dem(N/2+1:N/2+length(I_temp));
&&& Q_dem=signal_mod1.*sin(2*pi*fc*t)*2;
&&& Q_dem=conv(Q_dem,lpf);
&&& Q_dem=-Q_dem(N/2+1:N/2+length(I_temp));
&&& I_dem_out=zeros(1,length(I_dem)/multi);&&&&&&&& % 抽取
&&& Q_dem_out=zeros(1,length(Q_dem)/multi);
&&& for i=1:length(I_dem_out)
&&&&&& I_dem_out(i)=I_dem(multi*(i-1)+1);
&&&&&& Q_dem_out(i)=Q_dem(multi*(i-1)+1);
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& %差分解调
&&& demod_data = zeros(1,data_len);
&&& demod_data(1) = Q_dem_out(sample_number);
&&& for i = 2:data_len
&&&&&&& demod_data(i) = Q_dem_out(i*sample_number)*I_dem_out((i-1)*sample_number) - I_dem_out(i*sample_number)*Q_dem_out((i-1)*sample_number);
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& demod_data = demod_data&0;
&&& demod_data = 2*demod_data-1;
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& %计算误码率
&&& [num,ber(SNR+1)]=symerr(demod_data,data);
&&& %**************************************************************************
%**************************************************************************
%--------------------------------------------------------------------------
%误码率曲线
semilogy([0:8],ber,'r*-');
%**************************************************************************
%--------------------------------------------------------------------------
%误码率理论值
snr = 0:0.1:8;
for i = 1:length(snr)
&&& snr1(1,i) = 10^(snr(1,i)/10);
&&& ps(1,i) = 1/2 * erfc(sqrt(snr1(1,i)));
&&& pe(1,i) = 2 * ps(1,i);
semilogy([0:.1:8],pe);
%**************************************************************************
%MSK调制,差分解调方法二
%--------------------------------------------------------------------------
data_len = 10000;&&&&&&&&&& %码元个数
sample_number = 8;&&&&&&&&& %采样个数
Rb = 24000;&&&&&&&&&&&&&&&& %码元速率
fc = 96000;&&&&&&&&&&&&&&&& %载波频率
%**************************************************************************
%--------------------------------------------------------------------------
%随机产生传输信号
data=rand_binary(data_len);
%**************************************************************************
%--------------------------------------------------------------------------
%MSK基带调制
[signal_out,I_out,Q_out] = mod_msk(data,data_len,sample_number,Rb);
%**************************************************************************
%--------------------------------------------------------------------------
multi = fc/Rb;
I_temp=interp(I_out,multi);
Q_temp=interp(Q_out,multi);
Fs=fc*sample_
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);
%**************************************************************************
%--------------------------------------------------------------------------
for SNR = 0:8
signal_mod1 = awgn(signal_mod,SNR);
&&& %--------------------------------------------------------------------------
&&& %去载波
&&& N=300;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& % 滤波器的阶数为(N+1)&&
&&& F=[0,fc-1000,fc+1000,Fs/2]*2/Fs;
&&& A=[1,1,0,0];
&&& lpf=firls(N,F,A);
&&& [amp_lpf,w]=freqz(lpf);
&&& I_dem=signal_mod1.*cos(2*pi*fc*t)*2;
&&& I_dem=conv(I_dem,lpf);
&&& I_dem=I_dem(N/2+1:N/2+length(I_temp));
&&& Q_dem=signal_mod1.*sin(2*pi*fc*t)*2;
&&& Q_dem=conv(Q_dem,lpf);
&&& Q_dem=-Q_dem(N/2+1:N/2+length(I_temp));
&&& I_dem_out=zeros(1,length(I_dem)/multi);&&&&&&&& % 抽取
&&& Q_dem_out=zeros(1,length(Q_dem)/multi);
&&& for i=1:length(I_dem_out)
&&&&&& I_dem_out(i)=I_dem(multi*(i-1)+1);
&&&&&& Q_dem_out(i)=Q_dem(multi*(i-1)+1);
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& %差分解调
&&& demod_data = zeros(1,data_len);
&&& demod_data(1) = Q_dem_out(sample_number);
&&& for i = 2:2:data_len
&&&&&&& demod_data(i) = -I_dem_out(i*sample_number)*Q_dem_out((i-1)*sample_number);
&&& for i = 3:2:data_len
&&&&&&& demod_data(i) = Q_dem_out(i*sample_number)*I_dem_out((i-1)*sample_number);
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& demod_data = demod_data&0;
&&& demod_data = 2*demod_data-1;
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& %计算误码率
&&& [num,ber(SNR+1)]=symerr(demod_data,data);
&&& %**************************************************************************
%**************************************************************************
%--------------------------------------------------------------------------
%误码率曲线
semilogy([0:8],ber,'r*');
%**************************************************************************
%--------------------------------------------------------------------------
%误码率理论值
snr = 0:0.1:8;
for i = 1:length(snr)
&&& snr1(1,i) = 10^(snr(1,i)/10);
&&& ps(1,i) = 1/2 * erfc(sqrt(snr1(1,i)));
&&& pe(1,i) = 2 * ps(1,i);
semilogy([0:.1:8],pe);
%**************************************************************************
%MSK调制,解调
%--------------------------------------------------------------------------
data_len = 30000;&&&&&&&&&& %码元个数
sample_number = 8;&&&&&&&&& %采样个数
Rb = 24000;&&&&&&&&&&&&&&&& %码元速率
fc = 96000;&&&&&&&&&&&&&&&& %载波频率
%**************************************************************************
%--------------------------------------------------------------------------
%随机产生传输信号
data = rand_binary(data_len);
%**************************************************************************
%--------------------------------------------------------------------------
%MSK基带调制
[signal_out,I_out,Q_out] = mod_msk(data,data_len,sample_number,Rb);
%**************************************************************************
%--------------------------------------------------------------------------
multi = fc/Rb;
I_temp=interp(I_out,multi);
Q_temp=interp(Q_out,multi);
Fs=fc*sample_
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);
% signal_mod1=real((I_temp+j*Q_temp).*exp(j*2*pi*fc*t));
%**************************************************************************
%--------------------------------------------------------------------------
for SNR = 0:8
signal_mod1 = 0.01 * awgn(signal_mod,SNR);
&&& %--------------------------------------------------------------------------
&&& %去载波
&&& N=300;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& % 滤波器的阶数为(N+1)&&
&&& F=[0,fc-1000,fc+1000,Fs/2]*2/Fs;
&&& A=[1,1,0,0];
&&& lpf=firls(N,F,A);
&&& [amp_lpf,w]=freqz(lpf);
&&& I_dem=signal_mod1.*cos(2*pi*fc*t)*2 .* cos(pi*t*Rb/2);
&&& I_dem=conv(I_dem,lpf);
&&& I_dem=I_dem(N/2+1:N/2+length(I_temp));
&&& Q_dem=signal_mod1.*sin(2*pi*fc*t)*2 .* sin(pi*t*Rb/2);
&&& Q_dem=conv(Q_dem,lpf);
&&& Q_dem=-Q_dem(N/2+1:N/2+length(I_temp));
&&& I_dem_out=zeros(1,length(I_dem)/multi);&&&&&&&& % 抽取
&&& Q_dem_out=zeros(1,length(Q_dem)/multi);
&&& for i=1:length(I_dem_out)
&&&&&& I_dem_out(i)=I_dem(multi*(i-1)+1);
&&&&&& Q_dem_out(i)=Q_dem(multi*(i-1)+1);
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& %解调,判决
&&& demod_data = zeros(1,data_len);
&&& for i = 1:data_len
&&&&&&& I_dem1(i) = I_dem_out(i*sample_number)&0;
&&&&&&& Q_dem1(i) = Q_dem_out(i*sample_number)&0;
&&& for i = 1:2:data_len
&&&&&&& m1(i) = Q_dem1(i);
&&& for i = 2:2:data_len
&&&&&&& m1(i) = I_dem1(i);
&&& m1 = 2*m1-1;
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& %差分解码
&&& demod_data = zeros(1,data_len);
&&& demod_data(1) = 1 * m1(1);
&&& for i = 2:data_len
&&&&&&& demod_data(i) = m1(i-1) * m1(i);
&&& %**************************************************************************
&&& %--------------------------------------------------------------------------
&&& %计算误码率
&&& [num,ber(SNR+1)]=symerr(demod_data,data);
&&& %**************************************************************************
end&&&&&&&&&&&&& % /for snr
%**************************************************************************
%--------------------------------------------------------------------------
%误码率曲线
semilogy([0:8],ber,'r*-');
%**************************************************************************
%--------------------------------------------------------------------------
%误码率理论值
snr = 0:0.1:8;
for i = 1:length(snr)
&&& snr1(1,i) = 10^(snr(1,i)/10);
&&& ps(1,i) = 1/2 * erfc(sqrt(snr1(1,i)));
&&& pe(1,i) = 2 * ps(1,i);
semilogy([0:.1:8],pe);
%**************************************************************************
function [data_binary,data_binary1]=rand_binary(data_len);
%随机产生一个二进制序列作为仿真用的消息序列
%**************************************************************************
%data&&&&&&&&&& 序列长度
%data_binary&&& 产生的二进制序列
%**************************************************************************
%--------------------------------------------------------------------------
data1=randn(1,data_len);
data_binary=zeros(1,data_len);
data_binary1=zeros(1,data_len);
for i=1:data_len
&&& if data1(i)&0
&&&&&& data_binary(i)=-1;
&&&&&& data_binary1(i)=0;
&&&&&& data_binary(i)=1;
&&&&&& data_binary1(i)=1;
%**************************************************************************
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3726次
排名:千里之外Matlab中simulink仿真模块中,二极管用什么样的模块?_百度知道
Matlab中simulink仿真模块中,二极管用什么样的模块?
提问者采纳
其他参数对仿真来说影响不大,前向电压,如有需要改动建议你使用库simpowersystems-power electronics里的diode模块,即使其导通的电压,只需改变forward voltage,参数设置用默认的即可
谢谢。问点别的,刚有个数据1.是多少,按常规表示?多谢了。。
就是1.9233乘10的负13次方,e-013就表示10的负13次方
提问者评价
其他类似问题
为您推荐:
您可能关注的推广回答者:
二极管的相关知识
其他1条回答
Simscape\SimElectronics\Semiconductor Devices\Diode
参数之类的怎么设置?
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁this.offsetHeight ? (documentElement.clientHeight-this.offsetHeight)/2 : 0));">
IC厂商技术专区
专业技术交流专区
综合交流专区
今日&0&人签到
后即可签到
需要确认注册邮箱后才能开通博客,
>>>关于matlab中MSK调制解调的高斯白噪声的加入
大家在做什么...
回复了帖子:
回复了帖子:
回复了帖子:
发表了主题:
发表了主题:
发表了主题:
回复了帖子:
发表了主题:
发表了主题:
发表了主题:
回复了帖子:
发表了主题:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
公开参与了投票:
发表了主题:
发表了主题:
回复了帖子:
发表了主题:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
公开参与了投票:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
发表了主题:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
回复了帖子:
关于matlab中MSK调制解调的高斯白噪声的加入
6年会员勋章目前未领取。领取条件:&凡是注册时间六年以上的活跃用户即可领取该勋章。
网站总积分:
需要确认注册邮箱后才能下载,
后可下载附件
本人用matlab作MSK的调制解调及其误码率的测试仿真。调制解调没有问题,只是只进行了两路的幅度调制后面的高频载波没有乘上,这样只得到了两路幅度调制后的序列并且其中一路进行了延时,解调也是在这两路基础上进行的。但是在做误码率测试时遇到了问题:按照一般matlab仿真程序中的加噪方法得到的噪声平均功率太大,造成误码率为0.5左右,这说明信号完全被噪声淹没。不知道那位高人能够指点指点,或者具体说一下如何加噪的方法。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
--- 现有 0 个回复,共 1 页 ---
上一帖&&&&
&&&&下一帖&&
江西省吉安市的游客&&&&&&
(您将以游客身份发表,请 | )
标题还可以输入80字
你还可以输入30000字
每月定期向您递送电子元器件规格书网中的最新元器件数据手册下载、库存信息及技术参数更新。
2015年博客大赛不仅鼓励原创博文,翻译和整理类博文亦纳入参赛范畴,除了常规的博主大奖、博文大奖,更有新增特别奖项: 明日之星、EDNC春节开荒少年、本月"星"博文、最萌女工程师/ EDNC女汉子、最受瞩目回归博主。。每3个月为一季。 第3季(2015年7月-9月)主题:消费、汽车、工业、测试测量、智能穿戴、智能家居等
EDN-深圳 8366025
菜农Cortex-M0技术交流
EDN-哈尔滨
EDN-模拟电路 2837145
促进EDN网友交流合作,方便EDN网友学习沟通
2015 UBM Asia Ltd. -- Use of this website is subject to its terms of use.
京ICP备号-4 |
京公网安备37 |

我要回帖

更多关于 matlab msk 的文章

 

随机推荐