當前位置:首頁 » 算力簡介 » 去中心化信道模擬

去中心化信道模擬

發布時間: 2021-09-10 01:50:57

㈠ MIMO無線信道模型的matlab模擬源程序

我最近下載了一個WINNER II的MIMO信道模型,你可以去看一下,有點復雜,不過文件比較全,其中D1.1.2 是信道模型的說明。網址:www.ist-winner.org/deliverables.html ; 源代碼及說明可以再這個網址里找到:www.ist-winner.org/phase_2_model.html
源程序裡面有幫助文件,解釋了函數的用處,我建議多考慮輸入輸出,注意函數要干什麼而不要太糾結於函數的具體。

㈡ MATLAB環境下擴頻通信的研究及誤碼率的模擬

摘 要
本文闡述了擴展頻譜通信技術的理論基礎和實現方法,並通過MATLAB 提供Simulink 模擬平台對直擴通信系統進行了模擬,詳細講述了各模塊的設計。在給定模擬條件下,運行了模擬系統,得到了預期的模擬結果。同時,利用建立的模擬系統,研究了系統信噪比與誤碼率關系,結果表明,提高信噪比,可以減小系統誤碼率 。
關鍵詞 直擴通信;信噪比;誤碼率;

abstract
This paper expounds the spread spectrum communication technology and the method of realizing the theoretical basis, and provide simulink7.1 simulation platform through MATLAB for straight expansion communication system is simulated, and detailed design of each mole tells the story. In a given simulation conditions, run the simulation system, and gained anticipative simulation results. At the same time, using the simulation system, established the system ber relationship with SNR, the results show that, improve signal-to-noise ratio, can rece the system ber.
Keywords straight extender communication; Signal-to-noise ratio(SNR);

1.緒論
按照擴展頻譜的方式不同, 現有的擴頻通信系統可分為直接序列( DS) 擴頻、跳頻( FH) 、跳時( TH) 、線性調頻( chirp) 以及上述幾種方式的組合。
本文主要討論直接序列擴頻系統的性能。直接序列擴頻就是直接用具有高碼率的擴頻碼序列在發送端去擴展信號的頻譜。而在接收端, 用相同的擴
頻碼序列去進行解擴, 將展寬的擴頻信號還原成原始的信息。直擴通信系統原理如圖1 所示。在發送端輸入的信息先經信息調制形成調頻或調相數字信號, 然後由擴頻碼發生器產生的擴頻碼序列去調制數字信號以展寬信號的頻譜, 再將展寬後的寬頻信號調制到射頻發送出去。在接收端, 接收機接收到寬頻
射頻信號後, 首先將其變頻至中頻, 然後通過同步電路捕捉發送來的擴頻碼的准確相位, 由此產生與發送來的偽隨機碼相位完全一致的接收用的偽隨機碼, 作為擴頻解調用的本地擴頻碼序列, 最後經信息解調, 恢復成原始信息輸出。

圖1 擴頻通信原理圖
由此可見, 直擴通信系統要進行三次調制和相應的解調, 分別為信息調制、擴頻調制和射頻調制, 以及相應的信息解調、解擴和射頻解調。與一般通信系統比較, 擴頻通信就是多了擴頻調制和解擴部分。
2.CDMA擴頻通信系統發展方向
擴頻通信系統是在20 世紀50 年代中期產生的,其抗干擾、抗竊聽、低截獲等方面的能力得到很大的發展,但都只是局部的發展。隨著微處理器、超大規模集成電路、數字信號處理器件、擴頻專用器件的問世,在20 世紀60 年代擴頻技術獲得了重大的突破和進展,在實際的應用中優越性更加明顯,擴頻通信成為通信的一種重要方式〔3〕。其優良的抗干擾特性、低截獲概率特性、多址接入能力和強保密性不僅在軍事通信中發揮出了不可取代的優勢,而且廣泛地滲透到民用和商用通信各個領域〔4〕,如衛星通信、移動通信、微波通信、無線定位系統、全球個人通信和無線區域網等等。總之,擴頻通信系統的這些優點決定了它在國內第三代移動通信中將擁有廣闊應用前景。為了使擴頻通信系統更好地發揮其抗干擾能力,應繼續在以下幾方面進一步研究:
(1)相關跳頻增強擴頻系統(CHESS)被廣泛裝備於國外部隊,具有很強的抗干擾性能,對CHESS 進行干擾研究是未來的發展方向之一。
(2) 跳頻技術與多種高效調制技術應用於很多民用通信系統,但由於無需考慮跟蹤式干擾或轉發式干擾等敵對干擾,其跳速通常較慢。如何解決高速跳頻技術與高效調制解調技術的有機結合還有待在今後的研究中不斷探索。
(3)因為混沌系統對初始值的敏感依賴性,可以提供數量眾多、非相關、類隨機而又確定、易於產生的信號,所以混沌序列特別適合作為擴頻通信中的擴頻碼,混沌擴頻通信是目前混沌應用研究最熱門的方向之一〔5〕。
(4)進一步研究混合式擴展頻譜系統(例如直擴與跳頻,直擴與跳時,直擴、跳頻與跳時的組合),優勢互補,從而滿足高性能指標的抗干擾要求,緩解某些技術難點,降低成本,進而達到更合理的性能價格比。

3.Matlab/Simulink模擬軟體及其通信工具箱
MATLAB 是一種數學應用軟體, 經過多年的發展, 開發了包括通信系統在內的多個工具箱, 成為目前科學研究和工程應用最廣泛的軟體包Simulink 是MATLAB 中的一種可視化模擬工具, 是一種基於MATLAB 的框圖設計環境, 是實現動態系統建模、模擬和分析的一個軟體包, 被廣泛應用於線性系統、非線性系統、數字控制及數字信號處理的建模和模擬中。Simulink 可以用連續采樣時間、離散采樣時間或兩種混合的采樣時間進行建模, 它也支持多速率系統, 也就是系統中的不同部分具有不同的采樣速率。為了創建動態系統模型,Simulink 提供了一個建立模型方塊圖的圖形用戶介面( GUI) , 這個創建過程只需單擊和拖動滑鼠操作就能完成, 它提供了一種更快捷、直接明了的方式, 而且用戶可以立即看到系統的模擬結果。
4.搭建CDMA擴頻通信模擬系統與模擬結果
4.1 直接序列擴頻系統
4.1.1發生信號模塊:

二進制數據源
a(t) d(t) s(t)

直接序列擴頻的發射機系統結構如上圖所示。其中設數據序列{an},極性波形為a(t), ,其電平取值±1,碼元速率為Rabps,碼元寬度為Ta=1/Ras.擴頻所使用的偽隨機續列c(t)(PN)也是電平取值±1的雙極性波形,對於雙極性波形而言,擴頻過程等價於數據流a(t)與隨機續列c(t)相乘的過程,擴頻輸出序列為d(t),也是電平取值±1的雙極性波形,其速。率等於碼片速率。擴頻序列經調制後得到的輸出信號送入信道。對於BPSK調制,有
s(t)=d(t)cos2∏ft
=a(t)c(t) cos2∏ft
由於pn碼速率遠遠高於數據傳輸速率,所以調制輸出信號s(t)的頻帶寬度將遠遠大於數據波形的寬度

4.1.2 信道及接收機模塊
在信道中,信號唄疊加了雜訊和干擾。接收機前端電路系統包含高頻放大,混頻,中頻放大等部分。目的是將接收機的微弱信號進行放大和頻率搬移以滿足後級(解擴)的信號處理要求。設信道中等效雜訊為n(t),干擾為J(t) ,則接收機前端電路系統輸出信號r(t)可建模為
r(t)=s(t) +n(t) + J(t)

其中s(t)是傳輸的調制信號。接收機中的同步系統負責想接收機解擴,解調和解碼等部分提供所需的時鍾和同步信號,保證接收端的本地本地擴頻序列同步,載波同步,定時時鍾同步等。同步系統通常由一些非線性網路和各種鎖相環路構成。黨接收機達到同步要求時,其本地擴頻序列與發射機擴頻序列相同。解擴也使以乘法器完成的,因此解擴輸出信號m(t)為
m(t)=r(t)c(t)
=( s(t) +n(t) + J(t))c(t)
=a(t)c^2(t)cos2∏ft+n(t)c(t)+J(t)c(t)

由於擴頻序列c(t)的取值為±1,故c^2(t)=1,且擴頻序列c(t)與雜訊和干擾n(t),J(t)是不相關的,因此解擴輸出的信號分量成為窄帶信號,而雜訊和干擾部分則是寬頻的,即
m(t)=a(t)cos2∏ft+n(t)c(t)+J(t)c(t)
這樣,將解擴輸出信號m(t)通過窄帶濾波器可以大大抑制雜訊和干擾部分,當無雜訊和干擾時,解擴信號在經過BPSK調制,得到解調輸出信號a^(t)=a(t),即完全恢復發送數據波形。
4.2 模擬系統模型
用戶一:
傳輸數據Bernoulli Binary Generator為隨機種子數61;
PN序列
特徵多項式為【1 0 0 0 0 1 1】,初始狀態【0 0 0 0 0 1】

用戶二:
傳輸數據Bernoulli Binary Generator為隨機種子數77;
PN序列
特徵多項式為【1 0 0 0 0 1 1】,初始狀態【0 0 0 0 1 1】

4.3 模擬結果及分析
4.3.1 分別為信源波形,PN序列波形及信源與PN序列相乘後的波形

4.3.2 分別為信源波形及解調後恢復波形

4.3.3 分別為信源波形的頻譜和解調恢復後波形的頻譜

4.3.4 分別為擴頻後的頻譜和進過信道後的頻譜

4.3.5 分析
擴頻序列波形等價於原序列波形與PN序列波形相乘的結果。對比發送信號波形與解調後恢復信號波形基本一致,說明解調正確。對比擴頻前與擴頻後的頻譜可見,擴頻以後的頻譜比原來的頻譜帶寬展寬了大約20倍,峰值高度降低了約6dB。
4.4 用戶1及用戶2誤碼率曲線及其分析

5.總結與體會
本次科研設計的題目是以MATLAB/SIMULINK模擬軟體為基礎設計一個CDMA擴頻通信設計系統。SIMULINK,擴頻通信等字眼對於我們來說都是全新的,陌生的東西。正因為東西陌生,所以這次科研訓練的目的不僅僅是設計一個通信系統,還有就是要學會在網上圖書館檢索,查找與科研訓練有關的資料,說來還真是慚愧,以前還從來沒有用過學校圖書館的網上圖書館查過資料。本次科研訓練還有一個新穎之處是我們自由組隊,以組隊的方式進行,組內再分工,從而鍛煉我們的團隊合作能力。
在老師的指導下,我們開始了尋找資料、熟悉模擬軟體的應用等事情當中。但,盲目卻在這里體現了。大多數的同學都成了無頭蒼蠅,開始在網上搜索相應的答案。可大海撈針談何容易;還有些同學開始聯系學長,想找些幫助,可這樣實習的目的就錯了,作用也將大打折扣。種種跡象表明,當讓學生們自己動手設計一件產品的時候,所學的一切知識都被忘在腦後,一切的思緒都被打亂了,學生能力的欠缺在此時被一覽無余。當然,我也不例外。但,經過調整,我開始靜下心來思考我的課題,我認為:一個設計者必須要有縝密的思維能力以及良好的心態。所以,以後的時間,我開始對我的課題進行分解,將大的問題分解成各小塊的部分來逐個擊破。
這次設計我負責的部分是信道及接收,在信道的部分加入一干擾信號,這里的干擾通常是指敵方的惡意干擾或用戶之間的相互干擾。接受部分主要就是對已調的信號進行解擴和解調,解擴要注意的就是需要一個與接收端完全一樣的PN序列,把已調信號解擴出來,解擴信號再經過PSK解調,得到的信號波形應與發端信號相同,說明完全恢復了所發送數據波形。在指導老師所給的參考資料的前提下完成這些不是特別大的問題,主要就是要熟悉原理,正確設置參數。擴頻通信技術具有抗干擾能力強,抗截獲,抗多徑,多址能力強,保密性好及測距精度高等一系列優點,因而越來越受到人們的重視。擴頻通信技術是一種信息傳輸方式,在發送端採用擴頻碼調制,使信號所佔的頻帶寬度遠大於所傳信息所需帶寬;在接收端採用相同的擴頻碼進行相關解調已恢復所傳信息數據。在知道這些原理之後再進行系統的設計就容易多了,要想很好的完成我的接收模塊,就必須熟悉整個模塊的工作過程。
總之,這次實習還是圓滿的完成了任務,在我們團隊的共同努力下實現了整個系統的通信過程,在看到接收的波形與恢復的波形一致時,這幾天的努力終於得到了認可。
致謝
當然,這次科研訓練讓我學到了很多東西,衷心的感謝我的指導老師和給我幫助的同學們,是他們幫助完成了這次科研訓練
參考文獻
《通信原理》第六版 樊昌信 曹麗娜編著 國防工業出版社
《擴頻通信技術及應用》韋惠民主編 西安電子科技大學出版
《基於MATLAB/Simulink 的擴頻通信系統模擬及抗干擾研究》 鄒寧 徐松濤 牛建兵
《擴頻通信技術淺析》 王立松1,肖冰2,梁光明1,牛新武3

㈢ 我想問一下,OFDM信道估計用matlab模擬怎麼設計啊具體流程我不太懂,有沒有高手給我講下流程啊

你好 希望可以幫到你
%本程序用於OFDM基本原理模擬
%數據調制採用QPSK

clear all; clc;

%*****************參數設置部分**********************
SNR=10; %信噪比取值,dB為單位
fl=128; %設置FFT長度
Ns=6; %設置一個幀結構中OFDM信號的個數
para=128; %設置並行傳輸的子載波個數
gl=32; %設置保護時隙的長度

%***************發送端部分*************************
Signal=rand(1,para*Ns*2)>0.5; %產生0,1隨機數列,符號個數為para*2*Ns

%for i=1:para
%for j=1:Ns*2
% SigPara(i,j)=Signal(i*j); 錯誤的,作者是傻X
%串並轉換,將隨機產生的二進制矩陣變換為行數為para,列數為2*Ns的矩陣
%end
%end
SigPara=reshape(Signal,para,2*Ns);

%***********進行QPSK數據調制,將數據分為兩個通道**************
for j=1:Ns
ich(:,j)=SigPara(:,2*j-1);
qch(:,j)=SigPara(:,2*j);
end
kmod=1./sqrt(2);
ich1=ich.*kmod;
qch1=qch.*kmod;
x=ich1+qch1.*sqrt(-1); %產生復信號
y=ifft(x); %通過傅里葉反變換,將頻域數據轉換為時域數據
ich2=real(y); %I信道取變換後的實部
qch2=imag(y); %I信道取變換後的虛部

%*******************插入保護間隔*******************
ich3=[ich2(fl-gl+1:fl,:);ich2];
qch3=[qch2(fl-gl+1:fl,:);qch2];
%******************並串轉換*********************
ich4=reshape(ich3,1,(fl+gl)*Ns);
qch4=reshape(qch3,1,(fl+gl)*Ns);
%*****************形成復數發射數據***************
TrData=ich4+qch4.*sqrt(-1);
ReData=awgn(TrData,SNR,'measured');

%接收端 移去保護時隙
idata=real(ReData);
qdata=imag(ReData);
idata1=reshape(idata,fl+gl,Ns);
qdata1=reshape(qdata,fl+gl,Ns);
idata2=idata1(gl+1:gl+fl,:);
qdata2=qdata1(gl+1:gl+fl,:);

%********FFT*****************
Rex=idata2+qdata2*sqrt(-1);
ry=fft(Rex);
ReIchan=real(ry);
ReQchan=imag(ry);
ReIchan=ReIchan/kmod;
ReQchan=ReQchan/kmod;

%*******QPSK逆映射*********
for j=1:Ns
RePara(:,2*j-1)=ReIchan(:,j);
RePara(:,2*j)=ReQchan(:,j);
end
ReSig=reshape(RePara,1,para*Ns*2);
%符號抽樣判決
ReSig=ReSig>0.5;
figure
subplot(2,1,1)
stem(ReSig(1:1000))
legend('輸出數據')
grid
subplot(2,1,2)
stem(Signal(1:1000))
legend('輸入數據')
grid

%end of script file

㈣ 信號通過瑞利或是萊斯信道怎麼模擬

首先建立瑞利或者萊斯信道的模型,即h(k),具體公式什麼的可以去論文去找,然後發送信號s(k)和h(k)作卷積,再加上高斯白雜訊,matlab里一般用AWGN函數

㈤ 哪位有基於Matlab的OFDM系統模擬中,不同信道下誤碼率曲線的代碼萬分感謝!!!

拿去把 信道估計,有BER曲線

clear all;
close all;
fprintf( '\n OFDM模擬\n \n') ;
% --------------------------------------------- %
% 參數定義 %
% --------------------------------------------- %
IFFT_bin_length = 1024;
carrier_count = 200;
bits_per_symbol = 2;
symbols_per_carrier = 50;
% 子載波數 200
% 位數/ 符號 2
% 符號數/ 載波 50
% 訓練符號數 10
% 循環前綴長度 T/4(作者註明) All-zero CP
% 調制方式 QDPSK
% 多徑信道數 2、3、4(預設)
% 信道最大時延 7 (單位數據符號)
% 模擬條件 收發之間嚴格同步
%SNR=input('SNR='); % 輸入信噪比參數
SNR=3:14;%定義信噪比范圍
BER=zeros(1,length(SNR));
baseband_out_length = carrier_count * symbols_per_carrier * bits_per_symbol;% 計算發送的二進制序列長度
carriers = (1: carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2)); % 坐標: (1 to 200) + 156 , 157 -- 356
conjugate_carriers=IFFT_bin_length-carriers+2; % 坐標 :1024 - (157:356) + 2 = 1026 - (157:356) = (869:670)
% 構造共軛時間-載波矩陣,以便應用所謂的RCC,Reced Computational Complexity演算法,即ifft之後結果為實數
% Define the conjugate time-carrier matrix
% 也可以用flipdim函數構造對稱共軛矩陣
% --------------------------------------------- %
% 信號發射 %
% --------------------------------------------- %
%out = rand(1,baseband_out_length);
%baseband_out1 = round(out) ;
%baseband_out2 = floor(out*2) ;
%baseband_out3 = ceil(out*2)-1 ;
%baseband_out4 = randint(1,baseband_out_length);
% 四種生成發送的二進制序列的方法,任取一種產生要發送的二進制序列
%if (baseband_out1 == baseband_out2 & baseband_out1 == baseband_out3 )
% fprintf('Transmission Sequence Generated \n \n');
% baseband_out = baseband_out1 ;
%else
% fprintf('Check Code!!!!!!!!!!!!!!!!!!!!! \n \n');
%end
% 驗證四種生成發送的二進制序列的方法
baseband_out=round( rand(1,baseband_out_length));
convert_matrix = reshape(baseband_out,bits_per_symbol,length(baseband_out)/bits_per_symbol);
for k = 1length(baseband_out)/bits_per_symbol),
molo_baseband(k) = 0;
for i = 1:bits_per_symbol
molo_baseband(k) = molo_baseband(k) + convert_matrix(i,k)* 2^(bits_per_symbol - i);
end
end
% 每2個比特轉化為整數 0至3
% 採用'left-msb'方式
%-------------------------------------------------------------------------
% Test by lavabin
% A built-in function of directly change binary bits into decimal numbers
%-------------------------------------------------------------------------
%convert_matrix1 = zeros(length(baseband_out)/bits_per_symbol,bits_per_symbol);
%convert_matrix1 = convert_matrix' ;
%Test_convert_matrix1 = bi2de(convert_matrix1,bits_per_symbol,'left-msb');
%Test_convert_matrix2 = bi2de(convert_matrix1,bits_per_symbol,'right-msb');
% 函數說明:
% BI2DE Convert binary vectors to decimal numbers.
% D = BI2DE(B) converts a binary vector B to a decimal value D. When B is
% a matrix, the conversion is performed row-wise and the output D is a
% column vector of decimal values. The default orientation of thebinary
% input is Right-MSB; the first element in B represents the least significant bit.
%if (molo_baseband == Test_convert_matrix1')
% fprintf('molo_baseband = Test_convert_matrix1 \n\n\n');
%else if (molo_baseband == Test_convert_matrix2')
% fprintf('molo_baseband = Test_convert_matrix2 \n\n\n');
% else
% fprintf('molo_baseband ~= any Test_convert_matrix \n\n\n');
% end
%end
% we get the result "molo_baseband = Test_convert_matrix1".
%-------------------------------------------------------------------------
carrier_matrix = reshape(molo_baseband,carrier_count,symbols_per_carrier)';
% 生成時間-載波矩陣
% --------------------------------------------- %
% QDPSK調制 %
% --------------------------------------------- %
carrier_matrix = [zeros(1,carrier_count); carrier_matrix]; % 添加一個差分調制的初始相位,為0
for i = 2symbols_per_carrier + 1)
carrier_matrix(i, = rem(carrier_matrix(i, + carrier_matrix (i-1,, 2^bits_per_symbol) ; % 差分調制
end
carrier_matrix = carrier_matrix*((2*pi)/(2^bits_per_symbol)) ; % 產生差分相位
[X, Y]=pol2cart(carrier_matrix, ones(size(carrier_matrix,1),size(carrier_matrix,2))); % 由極坐標向復數坐標轉化 第一參數為相位 第二參數為幅度
% Carrier_matrix contains all the phase information and all the amplitudes are the same『1』.
complex_carrier_matrix = complex(X, Y) ;
% 添加訓練序列 `
training_symbols = [ 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 ...
-j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 ...
1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 ...
-1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j ...
-1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 1 j j 1 -1 -j -j -1 ]; % 25 times "1 j j 1" , 25 times "-1 -j -j -1", totally 200 symbols as a row
training_symbols = cat(1, training_symbols, training_symbols) ;
training_symbols = cat(1, training_symbols, training_symbols) ; % Proction of 4 rows of training_symbols
complex_carrier_matrix = cat(1, training_symbols, complex_carrier_matrix) ; % 訓練序列與數據合並
% block-type pilot symbols
IFFT_molation = zeros(4 + symbols_per_carrier + 1,IFFT_bin_length) ;
% Here a row vector of zeros is between training symbols and data symbols!!! 
% 4 training symbols and 1 zero symbol
% every OFDM symbol takes a row of "IFFT_molation"
IFFT_molation(: , carriers) = complex_carrier_matrix;
IFFT_molation(: , conjugate_carriers) = conj(complex_carrier_matrix) ;
%-------------------------------------------------------------------------
% Test by lavabin -- Find the indices of zeros
%index_of_zeros = zeros(symbols_per_carrier,IFFT_bin_length - 2*carrier_count);
%IFFT_molation1 = zeros(4 + symbols_per_carrier + 1,IFFT_bin_length);
%IFFT_molation2 = zeros(4 + symbols_per_carrier + 1,IFFT_bin_length);
%IFFT_molation1(6:symbols_per_carrier+5, = IFFT_molation(6:symbols_per_carrier+5,==0 ;
%for i = 1:symbols_per_carrier
%index_of_zeros(i, = find(IFFT_molation1(i+5,==1);
%end
%-------------------------------------------------------------------------
time_wave_matrix = ifft(IFFT_molation') ; % 進行IFFT操作
time_wave_matrix = time_wave_matrix'; % If X is a matrix, ifft returns the inverse Fourier transform of each column of the matrix.
for i = 1: 4 + symbols_per_carrier + 1
windowed_time_wave_matrix( i, : ) = real(time_wave_matrix( i, : )) ;
end
% get the real part of the result of IFFT
% 這一步可以省略,因為IFFT結果都是實數
% 由此可以看出,只是取了IFFT之後載波上的點,並未進行CP的復制和添加end
ofdm_molation = reshape(windowed_time_wave_matrix',1, IFFT_bin_length*(4 + symbols_per_carrier + 1) ) ;
% P2S operation
%-------------------------------------------------------------------------
% Test by lavabin
% Another way of matrix transition
%ofdm_molation_tmp = windowed_time_wave_matrix.';
%ofdm_molation_test = ofdm_molation_tmp(';
%if (ofdm_molation_test == ofdm_molation)
% fprintf('ofdm_molation_test == ofdm_molation \n\n\n');
%else
%fprintf('ofdm_molation_test ~= ofdm_molation \n\n\n');
%end
% We get the result "ofdm_molation_test == ofdm_molation" .
%-------------------------------------------------------------------------
Tx_data=ofdm_molation;
% --------------------------------------------- %
% 信道模擬 %
% --------------------------------------------- %
d1= 4; a1 = 0.2; d2 = 5; a2 = 0.3; d3 = 6; a3 = 0.4; d4 = 7; a4 = 0.5; %信道模擬
1 = zeros(size(Tx_data)) ;
for i = 1 + d1: length(Tx_data)
1(i) = a1*Tx_data( i - d1) ;
end
2 = zeros(size(Tx_data) ) ;
for i = 1 + d2: length( Tx_data)
2(i) = a2*Tx_data( i - d2) ;
end
3 = zeros(size(Tx_data) ) ;
for i = 1 + d3: length(Tx_data)
3(i) = a3*Tx_data ( i - d3) ;
end
4 = zeros(size(Tx_data) ) ;
for i = 1 + d4: length( Tx_data)
4(i) = a4*Tx_data(i - d4) ;
end
Tx_data = Tx_data + 1 + 2 + 3 + 4; % 4 multi-paths
Tx_signal_power = var(Tx_data);
for idx=1:length(SNR)%monte carlo 模擬模擬

linear_SNR = 10^( SNR(idx) /10) ;
noise_sigma = Tx_signal_power / linear_SNR;
noise_scale_factor = sqrt(noise_sigma) ;
noise = randn(1, length(Tx_data) )*noise_scale_factor;
Rx_Data = Tx_data + noise;
% --------------------------------------------- %
% 信號接收 %
% --------------------------------------------- %
Rx_Data_matrix = reshape(Rx_Data, IFFT_bin_length, 4 + symbols_per_carrier + 1) ;
Rx_spectrum = fft(Rx_Data_matrix) ;
% Suppose precise synchronazition between Tx and Rx
Rx_carriers = Rx_spectrum( carriers, : )';
Rx_training_symbols = Rx_carriers( (1: 4) , : ) ;
Rx_carriers = Rx_carriers((5: 55), : ) ;
% --------------------------------------------- %
% 信道估計 %
% --------------------------------------------- %

Rx_training_symbols = Rx_training_symbols./ training_symbols;
Rx_training_symbols_deno = Rx_training_symbols.^2;
Rx_training_symbols_deno = Rx_training_symbols_deno(1,+Rx_training_symbols_deno(2,+Rx_training_symbols_deno(3,+Rx_training_symbols_deno(4, ;
Rx_training_symbols_nume = Rx_training_symbols(1, : ) +Rx_training_symbols(2, : ) + Rx_training_symbols(3, : ) +Rx_training_symbols(4, : ) ;
Rx_training_symbols_nume = conj(Rx_training_symbols_nume) ;
% 取4個向量的導頻符號是為了進行平均優化
% 都是針對 「行向量」即單個的OFDM符號 進行操作
% 原理:尋求1/H,對FFT之後的數據進行頻域補償
% 1/H = conj(H)/H^2 because H^2 = H * conj(H)
Rx_training_symbols = Rx_training_symbols_nume./Rx_training_symbols_deno;
Rx_training_symbols = Rx_training_symbols_nume./Rx_training_symbols_deno;
Rx_training_symbols_2 = cat(1, Rx_training_symbols,Rx_training_symbols) ;
Rx_training_symbols_4 = cat(1, Rx_training_symbols_2,Rx_training_symbols_2) ;
Rx_training_symbols_8 = cat(1, Rx_training_symbols_4,Rx_training_symbols_4) ;
Rx_training_symbols_16 = cat(1, Rx_training_symbols_8, Rx_training_symbols_8) ;
Rx_training_symbols_32 = cat(1, Rx_training_symbols_16, Rx_training_symbols_16) ;
Rx_training_symbols_48 = cat(1, Rx_training_symbols_32, Rx_training_symbols_16) ;
Rx_training_symbols_50 = cat(1, Rx_training_symbols_48, Rx_training_symbols_2) ;
Rx_training_symbols = cat(1, Rx_training_symbols_50,Rx_training_symbols) ;
Rx_carriers = Rx_training_symbols.*Rx_carriers; % 進行頻域單抽頭均衡
Rx_phase = angle(Rx_carriers)*(180/pi) ;
phase_negative = find(Rx_phase < 0) ;
%----------------------Test of Using "rem"---------------------------------
%Rx_phase1 = Rx_phase;
%Rx_phase2 = Rx_phase;
%Rx_phase1(phase_negative) = rem(Rx_phase1(phase_negative) + 360, 360) ;
%Rx_phase2(phase_negative) = Rx_phase2(phase_negative) + 360 ;
%if Rx_phase2(phase_negative) == Rx_phase1(phase_negative)
%fprintf('\n There is no need using rem in negative phase transition.\n')
%else
% fprintf('\n We need to use rem in negative phase transition.\n')
%end
%-------------------------------------------------------------------------
Rx_phase(phase_negative) = rem(Rx_phase(phase_negative) + 360, 360) ; % 把負的相位轉化為正的相位
Rx_decoded_phase = diff(Rx_phase) ;
% 這也是為什麼要在前面加上初始相位的原因
% 「Here a row vector of zeros is between training symbols and data symbols!!!」
phase_negative = find(Rx_decoded_phase < 0) ;
Rx_decoded_phase(phase_negative)= rem(Rx_decoded_phase(phase_negative) + 360, 360) ; % 再次把負的相位轉化為正的相位
% --------------------------------------------- %
% QDPSK解調 %
% --------------------------------------------- %
base_phase = 360 /2^bits_per_symbol;
delta_phase = base_phase /2;
Rx_decoded_symbols = zeros(size(Rx_decoded_phase,1),size(Rx_decoded_phase,2)) ;
for i = 1: (2^bits_per_symbol - 1)
center_phase = base_phase*i;
plus_delta = center_phase + delta_phase; % Decision threshold 1
minus_delta = center_phase - delta_phase; % Decision threshold 2
decoded = find((Rx_decoded_phase <= plus_delta)&(Rx_decoded_phase > minus_delta)) ;
Rx_decoded_symbols(decoded) = i;
end
% 僅僅對三個區域進行判決
% 剩下的區域就是零相位的空間了
% 這個區域在定義解調矩陣時已經定義為零
Rx_serial_symbols = reshape(Rx_decoded_symbols',1,size(Rx_decoded_symbols, 1)*size(Rx_decoded_symbols,2)) ;
for i = bits_per_symbol: -1: 1
if i ~= 1
Rx_binary_matrix(i, : ) = rem(Rx_serial_symbols, 2) ;
Rx_serial_symbols = floor(Rx_serial_symbols/2) ;
else
Rx_binary_matrix( i, : ) = Rx_serial_symbols;
end
end
% Integer to binary
baseband_in = reshape(Rx_binary_matrix, 1,size(Rx_binary_matrix, 1)*size(Rx_binary_matrix, 2) ) ;
% --------------------------------------------- %
% 誤碼率計算 %
% --------------------------------------------- %
%bit_errors(idx) = find(baseband_in ~= baseband_out) ;
% find的結果 其每個元素為滿足邏輯條件的輸入向量的標號,其向量長度也就是收發不一樣的bit的個數
%bit_error_count(idx) = size(bit_errors, 2) ;
%total_bits = size( baseband_out, 2) ;
%bit_error_rate = bit_error_count/ total_bits;
%fprintf ( '%f \n',bit_error_rate) ;
[number_err(idx),BER(idx)] = biterr(baseband_out,baseband_in ) ;
end
semilogy(SNR,BER,'r*');

legend('OFDM BER-SNR');
xlabel('SNR (dB)'); ylabel('BER');
title('OFDM');
grid on;
% --------------------------------------------- %
% The END %
% --------------------------------------------- %
%
% 1. 該程序進行了簡單的LMS信道估計,沒有加入與MMSE等其他信道估計演算法的比較;
%
%2. 模擬條件為系統處於理想同步情況下。

㈥ 還有MIMO無線信道模型的matlab模擬源程序

我最近下載了一個WINNER II的MIMO信道模型,你可以去看一下,有點復雜,不過文件比較全,其中D1.1.2 是信道模型的說明

㈦ 信道估計模擬的時候需要信道響應參數嗎

這樣做是不對的,應該在過了信道之後的基礎上加雜訊,否則,按你疊加上去的那種雜訊就不是搞死白雜訊

㈧ 如何做LTE及未來4G的信道模型模擬,請告訴指點下啊

信道模型模擬,已經有成熟的協議了吧。可以先看TS25.996,了解SCM信道模型的建立。然後再看看ITU-R M.2135,學習IMT-A信道模型。我沒有做過信道,不過SCM模型是比較基礎的,IMT-A現在模擬大帶寬用的比較多。你也可以找本鏈路級方面的書看看,裡面一般都有信道的簡單介紹,有了中文的大概概念後再看英文的估計就好多了。
因為我沒有具體去做信道部分,所以你自己斟酌呀。

㈨ 求水聲信道MATLAB模擬程序

你可以去搜搜廈門大學海洋物理專業2012屆畢業的研究生的畢業論文。

熱點內容
山東礦機受查 發布:2025-07-12 14:11:26 瀏覽:875
vrc礦機系統 發布:2025-07-12 14:03:29 瀏覽:576
幣圈秘事 發布:2025-07-12 14:00:24 瀏覽:151
eth礦機手機可以多開么 發布:2025-07-12 13:47:21 瀏覽:819
數字貨幣幣值拉升 發布:2025-07-12 13:41:52 瀏覽:639
計算機挖比特幣畫面 發布:2025-07-12 13:41:19 瀏覽:293
東京哪裡有比特幣atm 發布:2025-07-12 13:31:47 瀏覽:261
以太坊買漲8分鍾 發布:2025-07-12 13:26:37 瀏覽:62
區塊鏈冰箱 發布:2025-07-12 13:17:15 瀏覽:63
比特幣礦機聲音掩飾 發布:2025-07-12 13:16:14 瀏覽:778