?? 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 + -