📄 addniose.m
字号:
%加噪声和多径
%function y=addnoise()
clc;
clear all;
close all;
%*** 再设计rafa为0.35的平方根升余弦滤波器做信道滤波器 ***%低通滤波器
windowlength=27;%窗口长度
beginsin=14;
sinlength=14;
period=80;
fftlength=17;%快速付利叶变换长度
nn6=1:windowlength;
line1=[(nn6-0)>=0];
line2=[(nn6-beginsin)>=0];
ditong(nn6)=line1-line2;
nn7=beginsin:windowlength;
rafa=linspace(0,0.5,sinlength);%生成14点线性向量,在0-0.5之间且包括0和0.5
ditong(nn7)=cos(rafa*pi);
ditong(period-windowlength+2:period)=fliplr(ditong(2:windowlength));
Hditong=ditong;
for nn8=1:fftlength*2 %作IDFT变换求得滤波器的时域特性
nn9=1:length(Hditong);%80
htemp(nn9)=Hditong(nn9).*cos(2*pi*(nn9-1)*(nn8-1)/period);
hditong1(nn8)=sum(htemp(nn9));
end;
fftline=12;
omiga=linspace(0,1,fftlength-fftline);
hintercept(1:fftline)=1; %长度为34的升余弦窗
hintercept(fftline+1:fftlength)=0.5*(1+cos(omiga*pi));
hintercept(fftlength+1:length(hditong1))=0;
hditong2=hintercept.*hditong1; %用升余弦窗截取
hditong3=hditong2(1:fftlength)/length(Hditong); % 滤波器归一化
hditong4=fliplr(hditong3);
hditong(1:fftlength)=hditong4(1:fftlength);
hditong(fftlength+1:fftlength*2-1)=hditong3(2:fftlength);%33点
%**************************************************************************
%*** 加多径 ***%Multipath Fading
tao=[0 1 2 5 8]; %多径时延
multi_plus=[1 0.41 0.27 0.18 0.06]; %多径分量的幅度
% multi_plus=[1 0 0 0 0]; %相当于不加多径
newditong=zeros(length(tao),length(hditong)+max(tao));
for multindex=1:length(tao)
newditong(multindex,tao(multindex)+1:length(hditong)+tao(multindex))=multi_plus(multindex).*hditong(1,:);
end; %(行号 ,此行的元素(A:B为A列至B列) )矩阵
multiditong=sum(newditong); %存在多径的信道冲激响应,sum(A)返回一行向量,其元素为矩阵A对应列向量的和
fft_multi=abs(fft(multiditong));
fft_hditong=abs(fft(hditong));
throughditongI=filter(multiditong,1,interzerosI); %通过多径信道后的 I 路信号
throughditongQ=filter(multiditong,1,interzerosQ); %通过多径信道后的 Q 路信号
%**************************************************************************
%*** 产生加性噪声 ***%
S_I=sum(throughditongI.^2)/length(throughditongI);%信号平均功率
S_Q=sum(throughditongQ.^2)/length(throughditongQ);%信号平均功率
S_power=(S_I+S_Q)/2;%信号平均功率
snr_db=8; %信噪比
snr=10^(snr_db/10);
N_hope=S_power/snr;
noise1=randn(1,length(throughditongI));
noisethrougth=filter(multiditong,1,noise1);
N_power=sum(noisethrougth.^2)/length(noisethrougth);%噪声平均功率
bizhi=sqrt(N_hope/N_power);%??根据信噪比调整噪声幅度?
noise=bizhi*noisethrougth;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -