我是靠谱客的博主 小巧香菇,这篇文章主要介绍MATLAB生成随机码元以及指定SNR数据tips生成随机码元【0或者1】生成随机码元【-1或者1】将随机数生成器重置为默认设置,以产生可重复的结果。生成一个白噪声随机向量生成指定SNR的数据,现在分享给大家,希望可以做个参考。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

MATLAB生成随机码元以及指定SNR数据

  • tips
  • 生成随机码元【0或者1】
  • 生成随机码元【-1或者1】
  • 将随机数生成器重置为默认设置,以产生可重复的结果。生成一个白噪声随机向量
  • 生成指定SNR的数据


tips

1、生成随机码元【0或者1】
2、生成随机码元【-1或者1】
3、将随机数生成器重置为默认设置,以产生可重复的结果。生成一个白噪声随机向量
4、生成指定SNR的数据

生成随机码元【0或者1】

复制代码
1
2
code = randi([0,1],1,N); %N为码元个数 1或者0

生成随机码元【-1或者1】

复制代码
1
2
3
4
code = randi([0,1],1,N); %N为码元个数 1或者0 I = find(code == 0); code(I) = -1;

将随机数生成器重置为默认设置,以产生可重复的结果。生成一个白噪声随机向量

复制代码
1
2
3
rng default x = randn(36,1);

生成指定SNR的数据

(1)用matlab自带函数

复制代码
1
2
signal2 = awgn(carrier2,-50,'measured'); %SNR = -50dB

(2)自己写的函数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
%noisegen:信号加噪函数 %X:信号输入,SNR:信噪比 %Y:加了噪声的信号,NOISE:所加的噪声 function [Y,NOISE] = noisegen(X,SNR) NOISE=randn(size(X)); %生成均值为0方差为1的正态分布白噪声 NOISE=NOISE-mean(NOISE); %但在任意长度下x=randn(1,N),x不一定是均值为0方差为1(有些小小的偏差),因此在这里做一点修正 signal_power = 1/length(X)*sum(X.*X); %计算信号的功率 noise_power_base = 1/length(NOISE)*sum(NOISE.*NOISE); %当前噪声序列的功率 noise_power = signal_power / ( 10^(SNR/10) ); %实际需要的噪声功率 NOISE=sqrt(noise_power/noise_power_base)*NOISE; %修正噪声序列的幅值,满足SNR的要求 Y=X+NOISE; end

(3)检查生成的带噪信号SNR是否为指定值

检验带噪信号的信噪比
信噪比的定义为

在这里插入图片描述

复制代码
1
2
3
4
5
6
7
8
9
10
% 计算信噪比函数 % I :原始信号 % In:加噪信号(原始信号+噪声信号) function snr=SNR_singlech(I,In) snr=0; Ps=sum((I.^2)); %信号功率 Pn=sum((In - I).^2); %噪声功率 snr=10*log10(Ps/Pn); end

(4)生成在限定带宽下指定SNR的数据

复制代码
1
2
参考之前GNSS中NOISE_GEN的处理方式,对噪声信号和噪声需要先进行滤波,去除带外能量

最后

以上就是小巧香菇最近收集整理的关于MATLAB生成随机码元以及指定SNR数据tips生成随机码元【0或者1】生成随机码元【-1或者1】将随机数生成器重置为默认设置,以产生可重复的结果。生成一个白噪声随机向量生成指定SNR的数据的全部内容,更多相关MATLAB生成随机码元以及指定SNR数据tips生成随机码元【0或者1】生成随机码元【-1或者1】将随机数生成器重置为默认设置,以产生可重复内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部