我是靠谱客的博主 活力绿草,最近开发中收集的这篇文章主要介绍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的数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复