我是靠谱客的博主 活力绿草,最近开发中收集的这篇文章主要介绍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】

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

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

code = randi([0,1],1,N);   %N为码元个数 1或者0
I = find(code == 0);
code(I) = -1;

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

rng default
x = randn(36,1); 

生成指定SNR的数据

(1)用matlab自带函数

signal2 = awgn(carrier2,-50,'measured');  %SNR = -50dB

(2)自己写的函数

%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是否为指定值

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

在这里插入图片描述

% 计算信噪比函数
% 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的数据

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

最后

以上就是活力绿草为你收集整理的MATLAB生成随机码元以及指定SNR数据tips生成随机码元【0或者1】生成随机码元【-1或者1】将随机数生成器重置为默认设置,以产生可重复的结果。生成一个白噪声随机向量生成指定SNR的数据的全部内容,希望文章能够帮你解决MATLAB生成随机码元以及指定SNR数据tips生成随机码元【0或者1】生成随机码元【-1或者1】将随机数生成器重置为默认设置,以产生可重复的结果。生成一个白噪声随机向量生成指定SNR的数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部