亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ofdm_code.m

?? OFDM 編寫源代碼 matlab ofdm coder
?? M
?? 第 1 頁 / 共 2 頁
字號:
% --------------------------------------------- %
% 摘錄自《基于MATLAB的OFDM系統仿真及性能分析》     
% 作者:呂愛琴 田玉敏 朱明華                      %
% 第22卷 第10期  計算機仿真  2005年10月          %
% 整理:  lavabin                              %
% 2006.04.24                          %
% --------------------------------------------- %
% 【問題】 
% 1. 該程序進行了簡單的LMS信道估計,沒有加入與MMSE等其他信道估計算法的比較;
% 2. 程序中循環前綴的設置,作者稱是25%的CP,但是從矩陣的構造并不能看出這一點
%    并且CP為Zero-CP,需要加入與真正復制了數據樣值的循環CP系統進行性能對比;
% 3. 仿真條件為系統處于理想同步情況下。
% 
% 【參考程序】 個人認為該程序參考了Eric Lawrey的學士學位論文程序。
%             原因:二者對每個OFDM符號的載波分配都采用了負頻率對稱排布;
%                  二者對發送數據在載波上的位置分配的設計完全相同;  
%                  調制方式都是DQPSK,調制解調代碼完全一致。

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(作者注明,不解為什么是該值)  
% 調制方式            QDPSK
% 多徑信道數          2、3、4(缺省)
% 信道最大時延        7 (單位數據符號)
% 仿真條件            收發之間嚴格同步 

SNR = input('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))
conjugate_carriers = IFFT_bin_length - carriers + 2
% 構造共軛時間-載波矩陣,以便應用所謂的RCC,Reduced Computational Complexity算法,即ifft之后結果為實數 
% Define the conjugate time-carrier matrix
% 也可以用flipdim函數構造對稱共軛矩陣

% --------------------------------------------- %
%                   信號發射                     %
% --------------------------------------------- %
out = rand(1,baseband_out_length); %隨機數
baseband_out1 = round(out) ; %最接近x的整數
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
% 驗證四種生成發送的二進制序列的方法

convert_matrix = reshape(baseband_out,bits_per_symbol,length(baseband_out)/bits_per_symbol) ;% 改變數組維數、大小
% 函數說明:
% RESHAPE Change size.
%    RESHAPE(X,M,N) returns the M-by-N matrix whose elements
%    are taken columnwise from X.  An error results if X does
%    not have M*N elements.

for k = 1:(length(baseband_out)/bits_per_symbol)
    modulo_baseband(k) = 0 ;
    for i = 1:bits_per_symbol
        modulo_baseband(k) =  modulo_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 the binary
%     input is Right-MSB; the first element in B represents the least
%     significant bit.
if (modulo_baseband == Test_convert_matrix1') 
    fprintf('modulo_baseband = Test_convert_matrix1 \n\n\n');
else if (modulo_baseband == Test_convert_matrix2')      
    fprintf('modulo_baseband = Test_convert_matrix2 \n\n\n');
    else
    fprintf('modulo_baseband ~= any Test_convert_matrix \n\n\n'); 
    end
end
% we get the result "modulo_baseband = Test_convert_matrix1".
%-------------------------------------------------------------------------
  
carrier_matrix = reshape(modulo_baseband,carrier_count,symbols_per_carrier)';  
% 生成時間-載波矩陣

% --------------------------------------------- %
%                   QDPSK調制                   %
% --------------------------------------------- %
carrier_matrix = [zeros(1,carrier_count); carrier_matrix];
% 添加一個差分調制的初始相位,為0
for i = 2:(symbols_per_carrier + 1)
    carrier_matrix(i,:) = rem(carrier_matrix(i,:) + carrier_matrix (i-1,:), 2^bits_per_symbol) ;
% 差分調制 rem-求余數
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’.  
%---------------------------------------
% 函數說明:
%  POL2CART Transform polar to Cartesian coordinates.
%    [X,Y] = POL2CART(TH,R) transforms corresponding elements of data
%    stored in polar coordinates (angle TH, radius R) to Cartesian
%    coordinates X,Y.  The arrays TH and R must the same size (or
%    either can be scalar).  TH must be in radians.

% [X,Y,Z] = POL2CART(TH,R,Z) transforms corresponding elements of
%    data stored in cylindrical coordinates (angle TH, radius R, height Z) 
%    to Cartesian coordinates X,Y,Z. The arrays TH, R, and Z must be
%    the same size (or any of them can be scalar).  TH must be in radians.
%---------------------------------------

complex_carrier_matrix = complex(X, Y) ;% 合成的
%---------------------------------------
% 函數說明:
%  COMPLEX Construct complex result from real and imaginary parts.
%    C = COMPLEX(A,B) returns the complex result A + Bi, where A and B are
%    identically sized real N-D arrays, matrices, or scalars of the same data type.

% 添加訓練序列
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) ;   
% Production of 4 rows of training_symbols
%-------------------------------------------------------------------------
% 函數說明:
% CAT Concatenate arrays.
%     CAT(DIM,A,B) concatenates the arrays A and B along the dimension DIM.  
%     CAT(2,A,B) is the same as [A,B].
%     CAT(1,A,B) is the same as [A;B].
%------------------------------------------------------------------------- 
%     B = CAT(DIM,A1,A2,A3,A4,...) concatenates the input
%     arrays A1, A2, etc. along the dimension DIM.

complex_carrier_matrix = cat(1, training_symbols, complex_carrier_matrix);
% 訓練序列與數據合并 
% block-type pilot symbols

IFFT_modulation = 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_modulation" 

IFFT_modulation(: , carriers) = complex_carrier_matrix;
IFFT_modulation(: , 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_modulation1 = zeros(4 + symbols_per_carrier + 1,IFFT_bin_length);
IFFT_modulation2 = zeros(4 + symbols_per_carrier + 1,IFFT_bin_length);
IFFT_modulation1(6:symbols_per_carrier+5,:) = IFFT_modulation(6:symbols_per_carrier+5,:)==0 ;
for i = 1:symbols_per_carrier
    index_of_zeros(i,:) = find(IFFT_modulation1(i+5,:)==1);%尋找非零元素下標
end
%-------------------------------------------------------------------------

time_wave_matrix = ifft(IFFT_modulation') ; % 進行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_modulation = reshape(windowed_time_wave_matrix',1, IFFT_bin_length*(4 + symbols_per_carrier + 1) ) ;
% P2S operation
%-------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区婷婷月色| 国产精品丝袜91| 91福利视频久久久久| 99久久99久久久精品齐齐| 国产精品456露脸| 寂寞少妇一区二区三区| 久久精品噜噜噜成人av农村| 久久er99精品| 国模冰冰炮一区二区| 国产精品一卡二| 国产成人免费在线视频| 国产精品一区二区在线播放| 国产成人精品亚洲日本在线桃色| 国产美女在线精品| 国产精品一区在线观看你懂的| 国产一区二区三区最好精华液| 狠狠狠色丁香婷婷综合久久五月| 国产一区二区美女诱惑| 国产激情一区二区三区桃花岛亚洲| 国产成人日日夜夜| 成人高清视频在线观看| 一本到一区二区三区| 欧美午夜影院一区| 91精品国产综合久久国产大片| 欧美一区日本一区韩国一区| 日韩欧美一级二级三级| 久久精品在线免费观看| 亚洲桃色在线一区| 亚洲午夜免费视频| 日本欧美韩国一区三区| 国产黄色精品视频| 色94色欧美sute亚洲线路一ni| 欧美日韩精品一区二区三区四区| 欧美精品丝袜中出| 久久久国产精华| 亚洲欧美成aⅴ人在线观看 | 五月天激情综合| 精品一区二区三区蜜桃| 成人av集中营| 欧美精品久久天天躁| 日韩欧美一级精品久久| 中文字幕日韩精品一区| 亚洲成av人在线观看| 国产一区二区不卡老阿姨| 成人av在线播放网址| 欧美一区二区视频在线观看2022| 久久久不卡网国产精品二区| 一区二区三区欧美久久| 国内精品伊人久久久久av一坑| 91亚洲精品一区二区乱码| 欧美一区二区三区免费| 亚洲国产精品嫩草影院| 麻豆国产精品一区二区三区 | 色欲综合视频天天天| 欧美一区中文字幕| 亚洲国产成人私人影院tom| 亚洲国产精品一区二区久久| 精品一区二区成人精品| 欧美性一区二区| 欧美激情综合在线| 麻豆视频一区二区| 在线看一区二区| 日本一区二区免费在线观看视频 | 久久69国产一区二区蜜臀| 91蜜桃免费观看视频| 精品国产露脸精彩对白| 亚洲国产aⅴ成人精品无吗| 风间由美性色一区二区三区| 4hu四虎永久在线影院成人| 国产精品不卡一区| 精品综合久久久久久8888| 欧美性一二三区| 国产精品福利电影一区二区三区四区| 青青草国产成人av片免费| 色久综合一二码| 欧美国产视频在线| 美女一区二区在线观看| 欧美三级中文字幕在线观看| 亚洲婷婷在线视频| 成人高清视频在线| 欧美国产精品专区| 经典一区二区三区| 日韩欧美一级在线播放| 婷婷六月综合网| 欧美午夜精品一区| 亚洲伦理在线免费看| a级高清视频欧美日韩| 久久久久久久久久美女| 国模套图日韩精品一区二区| 欧美一级爆毛片| 日韩精品一卡二卡三卡四卡无卡| 91激情五月电影| 亚洲欧美成人一区二区三区| 91在线小视频| 中文字幕在线不卡一区| 不卡大黄网站免费看| 国产精品嫩草99a| 成人性生交大片免费看中文 | 日韩国产成人精品| 欧美日韩日本视频| 午夜av区久久| 欧美电影在线免费观看| 爽好多水快深点欧美视频| 欧美日韩精品是欧美日韩精品| 亚洲国产sm捆绑调教视频| 欧美精品日日鲁夜夜添| 性做久久久久久| 欧美一区二区日韩| 蜜臀av性久久久久av蜜臀妖精| 日韩一区二区三区四区| 久久99精品久久久| 国产欧美日韩综合精品一区二区| 国产凹凸在线观看一区二区| 欧美激情一区三区| 99麻豆久久久国产精品免费 | 国产在线日韩欧美| 久久新电视剧免费观看| 国产老女人精品毛片久久| 国产婷婷色一区二区三区四区| 成人自拍视频在线| 18涩涩午夜精品.www| 欧洲激情一区二区| 视频一区欧美日韩| 欧美va在线播放| 风间由美一区二区av101| 最新日韩av在线| 欧美日韩成人综合天天影院| 美女尤物国产一区| 国产精品色眯眯| 在线一区二区三区| 蜜乳av一区二区三区| 欧美国产日产图区| 欧美亚洲高清一区二区三区不卡| 全部av―极品视觉盛宴亚洲| 久久综合九色综合久久久精品综合 | 久久综合精品国产一区二区三区| 国产成人综合自拍| 一区二区三区中文字幕电影 | 国产区在线观看成人精品| 92国产精品观看| 日本不卡1234视频| 欧美国产一区二区| 欧美久久久一区| 国产成人免费视频精品含羞草妖精| 中文字幕一区二区三| 欧美一区国产二区| av一区二区三区在线| 日韩高清电影一区| 中文字幕亚洲区| 欧美一区二区成人6969| 成人av网址在线| 三级欧美在线一区| 中文字幕欧美激情| 555www色欧美视频| www.色精品| 黑人精品欧美一区二区蜜桃| 尤物在线观看一区| 久久久久亚洲综合| 欧美色图天堂网| 丁香桃色午夜亚洲一区二区三区| 亚洲成人你懂的| 国产精品你懂的在线| 日韩精品一区二区三区四区| 91九色最新地址| 丁香另类激情小说| 久久国产精品99久久久久久老狼| 亚洲另类在线制服丝袜| 久久精品亚洲精品国产欧美| 欧美日韩激情一区二区| 99视频超级精品| 国产成人一级电影| 青青草伊人久久| 亚洲国产aⅴ天堂久久| 综合分类小说区另类春色亚洲小说欧美 | 欧美日韩你懂得| av色综合久久天堂av综合| 九一九一国产精品| 亚洲va国产天堂va久久en| 国产精品久久久久一区| 久久久久综合网| 精品国产乱码久久| 欧美一区二区美女| 欧美日韩一卡二卡三卡| 97久久精品人人澡人人爽| 国产不卡免费视频| 激情五月婷婷综合| 人人精品人人爱| 午夜久久久久久久久| 亚洲综合激情小说| 亚洲欧美日韩中文播放| 国产精品二区一区二区aⅴ污介绍| 久久久三级国产网站| 久久亚洲一区二区三区明星换脸| 91麻豆精品久久久久蜜臀| 欧美在线视频全部完| 色天天综合色天天久久| 色综合网色综合| 91丨porny丨蝌蚪视频| 成人高清视频免费观看| 成人sese在线|