clip_levelrecv(i) = clip_level;endif recv(i) no khong% tao ban sao len truc y do thispaced_chunks(i,fft_size:-1:fft_size/2+2) = conj(spaced_chunks(i,2:fft_size/2));end% tx_dechunk.m% Tin hieu khoi phuc de phat bang cach dat cac tap hop mien thoi gian trong% chuoi noi tiepxmit = zeros(1,num_chunks*fft_size);for i = 1:num_chunks for k = 1:fft_size xmit(k + (i-1)*fft_size) = td_sets(i,k);endend%……………………………………………………………………………………Đoạn chương trình mô phỏng thu tín hiệu OFDM% rx.mdisp(''''''''Receiving'''''''')rx_chunk% Thuc hien FFT de khoi phuc du lieu goc tu cac tap hop mien thoi gianrecv_spaced_chunks = zeros(num_chunks,fft_size);for i = 1:num_chunks recv_spaced_chunks(i,1:fft_size) = fft(recv_td_sets(i,1:fft_size));endrx_dechunkoutput = pol2bin(output);% Chuyen doi du lieu phan cuc thanh nhi phanwrite% rx_chunk.m% Chia tin hieu thu duoc thanh cac tap hop song song de giai dieu cherecv_td_sets = zeros(num_chunks,fft_size);for i = 1:num_chunks for k = 1:fft_size recv_td_sets(i,k) = recv(k + (i-1)*fft_size); endend% rx_dechunk.m% take out zeros_between from recv_spaced_chunks recv_padded_chunksrecv_padded_chunks = zeros(num_chunks, num_carriers+num_zeros);i = 1;for k = zeros_between +1:zeros_between +1:fft_size/2 recv_padded_chunks(1:num_chunks,i) = recv_spaced_chunks(1:num_chunks,k); i = i+1;end% take out num_zeros from padded chunks recv_chunksrecv_chunks = zeros(num_chunks, num_carriers);recv_chunks = recv_padded_chunks(1:num_chunks, num_zeros+1:num_carriers+… num_zeros);% Recover bit stream by placing reconstructed frequency domain data in seriesrecv_dechunked = zeros(1, num_chunks*num_carriers);for i = 1:num_chunks for k = 1:num_carriers recv_dechunked(k + (i-1)*num_carriers*2) = real(recv_chunks(i,k)); recv_dechunked(k + (i-1)*num_carriers*2) + num_carriers) = imag… (recv_chunks(i,k)); endend% take out trailing zeros from output outputoutput_analog = recv_dechunked(1:data_length);output = sign(output_analog);%……………………………………………………………………………………Đoạn chương trình mô phỏng phát tín hiệu QAMread% Doc du lieu cho QAM – Khong anh huong den OFDM data_in_pol = bin2pol(data_in); % Chuyen doi du lieu nhi phan thanh du lieu phan cuc% Kiem tra so song mang co phai la luy thua cua 2is_pow_2 = num_carriers;temp_do_QAM = 0;if is_pow_2 ~= 2while temp_do_QAM == 0temp_do_QAM = rem(is_pow_2,2);is_pow_2 = is_pow_2/2;if is_pow_2 == 2 temp_do_QAM = -99;% Dung la luy thua cua 2 -> Co the thuc hien QAMendendelsetemp_do_QAM = -99;% 2 la luy thua cua 2endif temp_do_QAM ~= -99''''''''>đồ án:CÔNG NGHỆ OFDMA CỦA WiMAXPHỤ LỤCĐoạn chương trình mô phỏng kênh truyền%ch.mrecv = xmit;% channel is applied to recv, don''''''''t modify transmitted dataif channel_on == 1disp(''''''''Simulating Channel'''''''')norm_factor = max(abs(recv)); % Normalize all data before applyingrecv = (1/norm_factor) * recv; % channel for a fair comparisonch_clippingch_multipathch_noiserecv = norm_factor * recv; % Restore data magnitude for proper decodingend%ch_clipping.mfor i = 1:length(recv)if recv(i) > clip_levelrecv(i) = clip_level;endif recv(i) no khong% tao ban sao len truc y do thispaced_chunks(i,fft_size:-1:fft_size/2+2) = conj(spaced_chunks(i,2:fft_size/2));end% tx_dechunk.m% Tin hieu khoi phuc de phat bang cach dat cac tap hop mien thoi gian trong% chuoi noi tiepxmit = zeros(1,num_chunks*fft_size);for i = 1:num_chunks for k = 1:fft_size xmit(k + (i-1)*fft_size) = td_sets(i,k);endend%……………………………………………………………………………………Đoạn chương trình mô phỏng thu tín hiệu OFDM% rx.mdisp(''''''''Receiving'''''''')rx_chunk% Thuc hien FFT de khoi phuc du lieu goc tu cac tap hop mien thoi gianrecv_spaced_chunks = zeros(num_chunks,fft_size);for i = 1:num_chunks recv_spaced_chunks(i,1:fft_size) = fft(recv_td_sets(i,1:fft_size));endrx_dechunkoutput = pol2bin(output);% Chuyen doi du lieu phan cuc thanh nhi phanwrite% rx_chunk.m% Chia tin hieu thu duoc thanh cac tap hop song song de giai dieu cherecv_td_sets = zeros(num_chunks,fft_size);for i = 1:num_chunks for k = 1:fft_size recv_td_sets(i,k) = recv(k + (i-1)*fft_size); endend% rx_dechunk.m% take out zeros_between from recv_spaced_chunks recv_padded_chunksrecv_padded_chunks = zeros(num_chunks, num_carriers+num_zeros);i = 1;for k = zeros_between +1:zeros_between +1:fft_size/2 recv_padded_chunks(1:num_chunks,i) = recv_spaced_chunks(1:num_chunks,k); i = i+1;end% take out num_zeros from padded chunks recv_chunksrecv_chunks = zeros(num_chunks, num_carriers);recv_chunks = recv_padded_chunks(1:num_chunks, num_zeros+1:num_carriers+… num_zeros);% Recover bit stream by placing reconstructed frequency domain data in seriesrecv_dechunked = zeros(1, num_chunks*num_carriers);for i = 1:num_chunks for k = 1:num_carriers recv_dechunked(k + (i-1)*num_carriers*2) = real(recv_chunks(i,k)); recv_dechunked(k + (i-1)*num_carriers*2) + num_carriers) = imag… (recv_chunks(i,k)); endend% take out trailing zeros from output outputoutput_analog = recv_dechunked(1:data_length);output = sign(output_analog);%……………………………………………………………………………………Đoạn chương trình mô phỏng phát tín hiệu QAMread% Doc du lieu cho QAM – Khong anh huong den OFDM data_in_pol = bin2pol(data_in); % Chuyen doi du lieu nhi phan thanh du lieu phan cuc% Kiem tra so song mang co phai la luy thua cua 2is_pow_2 = num_carriers;temp_do_QAM = 0;if is_pow_2 ~= 2while temp_do_QAM == 0temp_do_QAM = rem(is_pow_2,2);is_pow_2 = is_pow_2/2;if is_pow_2 == 2 temp_do_QAM = -99;% Dung la luy thua cua 2 -> Co the thuc hien QAMendendelsetemp_do_QAM = -99;% 2 la luy thua cua 2endif temp_do_QAM ~= -99
___________________________________________________________________ PHỤ LỤC Đoạn chương trình mô phỏng kênh truyền %ch.m recv = xmit; % channel is applied to recv, don't modify transmitted data if channel_on == 1 disp('Simulating Channel') norm_factor = max(abs(recv)); % Normalize all data before applying recv = (1/norm_factor) * recv; % channel for a fair comparison ch_clipping ch_multipath ch_noise recv = norm_factor * recv; % Restore data magnitude for proper decoding end %ch_clipping.m for i = 1:length(recv) if recv(i) > clip_level recv(i) = clip_level; end if recv(i) < -clip_level recv(i) = -clip_level; end end %ch_multipath.m copy1=zeros(size(recv)); for i=1+d1:length(recv) copy1(i)=a1*recv(i-d1); end Trang 1 ___________________________________________________________________ copy2=zeros(size(recv)); for i=1+d2:length(recv) copy2(i)=a2*recv(i-d2); end recv=recv+copy1+copy2; %ch_noise.m if already_made_noise == 0 % only generate once and use for both QAM and OFDM noise = (rand(1,length(recv))-0.5)*2*noise_level; already_made_noise = 1; end recv = recv + noise; %…………………………………………………………………………………… Đoạn chương trình mô phỏng phát tín hiệu OFDM % tx.m disp('Transmitting') read data_in_pol = bin2pol(data_in); % Chuyen doi du lieu nhi phan thanh du lieu phan cuc tx_chunk % Thuc hien IFFT de tao dang song mien thoi gian bieu dien du lieu td_sets = zeros(num_chunks,fft_size); for i = 1:num_chunks td_sets(i,1:fft_size) = real(ifft(spaced_chunks(i,1:fft_size))); end tx_dechunk % tx_chunk data_length = length(data_in_pol); %So ky tu nguyen thuy o dau vao num_chunks = ceil(data_length/(2*num_carriers)); %2 du lieu tren mot song mang % (thuc va ao) r = rem(data_length,2*num_carriers); Trang 2 ___________________________________________________________________ if r ~= 0 for i = 1:num_carriers*2-r data_in_pol(data_length+i) = 0; %them du lieu voi cac muc khong vao tap hop % du lieu sau khi phat hoan toan end %Toc do co the duoc cai thien end % Chia du lieu vao cac chunks chunks = zeros(num_chunks,num_carriers); % Danh cho toc do for i = 1:num_chunks % *********************chunk da duoc thuc hien for k = 1:num_carriers chunnks(i,k) = data_in_pol(2*num_carriers*(i-1)+k)+data_in_pol(2*… num_carrier*(i-1)+k+num_carrier)*j; end end % Them cac chunk voi cac muc zero de num_carriers va fft_size thich hop % Mot khi da thoa, cac khoang trong duoc don gian hoa num_desired_carriers = num_carriers; num_zeros = 0; thinking = 1; while thinking == 1 % Tiep tuc neu num_carriers va fft_size khong thich hop if rem(fft_size/2,num_desired_carriers) == 0 thinking = 0; else num_desired_carriers = num_desired_carriers + 1; num_zeros = num_zeros + 1; end end padded_chunks = zeros(num_chunks,num_carriers + num_zeros);% Danh cho toc do Trang 3 ___________________________________________________________________ padded_chunks(1:num_chunks,num_zeros + 1:num_carriers + num_zeros) = chunks; %Tinh toan giua cac muc khong zeros_between = ((fft_size/2) - (num_carriers + num_zeros))/(num_carriers + … num_zeros); spaced_chunks = zeros(num_chunks,fft_size); %Them vao giua cac muc khong i = 1; for k = zeros_between +1:zeros_between +1:fft_size/2 spaced_chunks(1:num_chunks,k) = padded_chunks(1:num_chunks,i); i = i+1; end % Gap du lieu de tao ra mot ham le cho dau vao IFFT for i = 1:num_chunks % Chu y: chi muc = 1 that ra la tan so mot chieu de ifft -> no khong % tao ban sao len truc y do thi spaced_chunks(i,fft_size:-1:fft_size/2+2) = conj(spaced_chunks(i,2:fft_size/2)); end % tx_dechunk.m % Tin hieu khoi phuc de phat bang cach dat cac tap hop mien thoi gian trong % chuoi noi tiep xmit = zeros(1,num_chunks*fft_size); for i = 1:num_chunks for k = 1:fft_size xmit(k + (i-1)*fft_size) = td_sets(i,k); end end %…………………………………………………………………………………… Đoạn chương trình mô phỏng thu tín hiệu OFDM % rx.m Trang 4 ___________________________________________________________________ disp('Receiving') rx_chunk % Thuc hien FFT de khoi phuc du lieu goc tu cac tap hop mien thoi gian recv_spaced_chunks = zeros(num_chunks,fft_size); for i = 1:num_chunks recv_spaced_chunks(i,1:fft_size) = fft(recv_td_sets(i,1:fft_size)); end rx_dechunk output = pol2bin(output); % Chuyen doi du lieu phan cuc thanh nhi phan write % rx_chunk.m % Chia tin hieu thu duoc thanh cac tap hop song song de giai dieu che recv_td_sets = zeros(num_chunks,fft_size); for i = 1:num_chunks for k = 1:fft_size recv_td_sets(i,k) = recv(k + (i-1)*fft_size); end end % rx_dechunk.m % take out zeros_between from recv_spaced_chunks recv_padded_chunks recv_padded_chunks = zeros(num_chunks, num_carriers+num_zeros); i = 1; for k = zeros_between +1:zeros_between +1:fft_size/2 recv_padded_chunks(1:num_chunks,i) = recv_spaced_chunks(1:num_chunks,k); i = i+1; end % take out num_zeros from padded chunks recv_chunks recv_chunks = zeros(num_chunks, num_carriers); Trang 5 ___________________________________________________________________ recv_chunks = recv_padded_chunks(1:num_chunks, num_zeros+1:num_carriers+ … num_zeros); % Recover bit stream by placing reconstructed frequency domain data in series recv_dechunked = zeros(1, num_chunks*num_carriers); for i = 1:num_chunks for k = 1:num_carriers recv_dechunked(k + (i-1)*num_carriers*2) = real(recv_chunks(i,k)); recv_dechunked(k + (i-1)*num_carriers*2) + num_carriers) = imag… (recv_chunks(i,k)); end end % take out trailing zeros from output output output_analog = recv_dechunked(1:data_length); output = sign(output_analog); %…………………………………………………………………………………… Đoạn chương trình mô phỏng phát tín hiệu QAM read % Doc du lieu cho QAM – Khong anh huong den OFDM data_in_pol = bin2pol(data_in); % Chuyen doi du lieu nhi phan thanh du lieu phan cuc % Kiem tra so song mang co phai la luy thua cua 2 is_pow_2 = num_carriers; temp_do_QAM = 0; if is_pow_2 ~= 2 while temp_do_QAM == 0 temp_do_QAM = rem(is_pow_2,2); is_pow_2 = is_pow_2/2; if is_pow_2 == 2 temp_do_QAM = -99;% Dung la luy thua cua 2 -> Co the thuc hien QAM end end Trang 6 ___________________________________________________________________ else temp_do_QAM = -99; % 2 la luy thua cua 2 end if temp_do_QAM ~= -99 do_QAM = 0; % Khong the thuc hien disp(‘ ‘),disp(‘ERROR: Cannot run QAM because num_carriers is not valid.’) disp(‘ Please see “setup.m” for details.’) end if do_QAM == 1 tic % Bat dau de tinh toan thoi gian mo phong thuc hien QAM disp(‘ ‘), disp(‘ ‘) disp(‘QAM simulation’), disp(‘Transmitting’) % Them cac muc zeros de du lieu duoc chia thanh cac phan bang nhau data_length = length(data_in_pol); r = rem(data_length,num_carriers); if r ~= 0 for i = 1:num_carriers-r data_in_pol(data_length+i) = 0; %Them dau vao voi cac zeros vao tap hop %du lieu end %Toc do co the duoc cai thien end data_length = length(data_in_pol); %Cap nhat sau khi them num_OFDM_symbols = ceil(data_length / (2*num_carriers)); % So ky hieu QAM duoc bieu dien bang so luong cua du lieu tren mot ky hieu OFDM num_QAM_symbols = num_carriers / 2; % So mau tren ky hieu QAM num_symbol_samples = fft_size / num_QAM_symbols; % Chuyen doi du lieu phan cuc [-1, 1] thanh du lieu 4 muc [-3, -1, 1, 3] data_in_4 = zeros(1,data_length/2); Trang 7 ___________________________________________________________________ for i = 1:2:data_length data_in_4(i – (i-1)/2) = data_in_pol(i)*2 + data_in_pol(i+1); end % Dinh ro diem lay mau giua 0 va 2*pi ts = linspace(0, 2*pi*QAM_periods, num_symbol_samples+1); % Phat du lieu 16-QAM tx_length = num_OFDM_symbols * num_QAM_symbols *… num_symbol_samples; QAM_tx_data = zeros(1,tx_length); for i = 1:2:data_length/2 for k = 1:num_symbol_samples QAM_tx_data(k+((i-1)/2)*num_symbol_samples) = data_in_4(i)*… cos(ts(k)) + data_in_4(i+1)*sin(ts(k)); end end Đoạn chương trình mô phỏng thu tín hiệu QAM disp(‘Receiving’) % Khoi phuc du lieu nhi phan (Giai ma QAM) cos_temp = zeros(1,num_symbol_samples); sin_temp = cos_temp; xxx = zeros(1,data_length/4); % Khoi tao muc khong cho toc do yyy = xxx; QAM_data_out_4 = zeros(1,data_length/2); for i = 1:2:data_length/2 % “cheating” for k = 1:num_symbol_samples % Tang so song mang de tao tan so cao va du lieu goc cos_temp(k) = QAM_rx_data(k+((i-1)/2)*num_symbol_samples) *… cos(ts(k)); sin_temp(k) = QAM_rx_data(k+((i-1)/2)*num_symbol_samples) *… sin(ts(k)); Trang 8 ___________________________________________________________________ end % LPF va xac dinh – chung ta se rat don gian LPF bang phep trung binh xxx(1+(i-1)/2) = mean(cos_temp); yyy(1+(i-1)/2) = mean(sin_temp); % Khoi phuc du lieu thanh dang noi tiep QAM_data_out_4(i) = xxx(1+(i-1)/2); QAM_data_out_4(i+1) = yyy(1+(i-1)/2); end % Thuc hien xac dinh giua cac muc [-3, -1, 1, 3] for i = 1:data_length/2 if QAM_data_out_4(i) >= 1, QAM_data_out_4(i) = 3; elseif QAM_data_out_4(i) >= 0, QAM_data_out_4(i) = 1; elseif QAM_data_out_4(i) >= -1, QAM_data_out_4(i) = -1; else QAM_data_out_4(i) = -3; end end % Chuyen doi du lieu 4 muc [-3, -1, 1, 3] ve du lieu phan cuc [-1, 1] QAM_data_out_pol = zeros(1,data_length); % “cheating” for i = 1:2:data_length switch QAM_data_out_4(1 + (i-1)/2) case –3 QAM_data_out_pol(i) = -1; QAM_data_out_pol(i+1) = -1; case –1 QAM_data_out_pol(i) = -1; QAM_data_out_pol(i+1) = 1; case 1 QAM_data_out_pol(i) = 1; QAM_data_out_pol(i+1) = -1; Trang 9 ___________________________________________________________________ case 3 QAM_data_out_pol(i) = 1; QAM_data_out_pol(i+1) = 1; otherwise disp(‘Error detected in switch i – This should not be happening.’); end end QAM_data_out = pol2bin(QAM_data_out_pol); % Chuyen doi ve du lieu nhi phan % Ngung tinh toan thoi gian thuc hien mo phong QAM QAM_simulation_time = toc; if QAM_simulation_time > 60 disp(strcat(‘Time for QAM simulation=’, num2str(QAM_simulation_time/60), … ‘ minutes.’)); else disp(strcat(‘Time for QAM simulation=’, num2str(QAM_simulation_time),‘ … seconds.’)); end end %…………………………………………………………………………………… Đoạn chương trình mô phỏng thuật toán tính BER % calculate the BER global BER_QAM_TEMP; binary_err_bits_QAM = 0; for i = 1:length(data_in) err = abs(data_in(i)-QAM_data_out(i)); if err > 0 binary_err_bits_QAM = binary_err_bits_QAM + 1; Trang 10 [...]... phức tạp, khách hàng có thể sử dụng thiết bị tại nhà 1.3 Các ưu và nhược điểm của WiMAX: 1.3.1 Một số ưu điểm chính của công nghệ WiMAX: 1.3.1.1 Lớp vật lí của WiMAX dựa trên nền kĩ thuật OFDM (ghép kênh phân tần trực giao): Lớp vật lí của WiMAX dựa trên nền kĩ thuật OFDM giúp hạn chế hiệu ứng phân tập đa đường, cho phép WiMAX hoạt động tốt trong môi truờng NLOS nên độ bao phủ rộng hơn nện khoảng cách... về tính hiệu quả đáng kể của hệ thống 1.4 WiMAX và các chuẩn không dây khác: - IEEE 802.16 và công nghệ WiMAX: Một trong những mục tiêu chính của Diễn đàn WiMAX là tạo ra một chuẩn tương thích từ chuẩn 802.16 của IEEE và các chuẩn HiperMAN của ETSI Điều này sẽ thực hiện được nhờ việc hình thành các mô tả hệ thống Dựa trên những gì mà Diễn đàn WiMAX xem xét về các điều khoản của nhà cung cấp dịch vụ... dụng văn phòng - WiMAX và Wi-Fi: WiMAX và Wi-Fi sẽ cùng tồn tại và trở thành những công nghệ bổ sung ngày càng lớn cho cácứng dụng riêng Đặc trưng của WiMAX là không thay thế Wi-Fi Hơn thế WiMAX bổ sung cho Wi-Fi bằng cách mở rộng Trang 21 _ phạm vi của Wi-Fi và mang lại những thực tế của người sử dụng "kiểu Wi-Fi" trên một quy mô địa lý rộng hơn Công nghệ Wi-Fi được... trọng khác của WiMAX đó là giải quyết kết nối cho mạng VoIP trong tương lai không xa - WiMAX với HiperMAN của ETSI: Các chuẩn 802.16-2004 (256 OFDM PHY) của IEEE và HiperMAN của ETSI sẽ chia sẻ chung các đặc tính kỹ thuật PHY và MAC Diễn đàn WiMAX hoạt động ở cả hai tổ chức tiêu chuẩn này để đảm bảo một chuẩn toàn cầu chung cho MAN vô tuyến, sẽ được chấp nhận 1.5 Các băng tần Wimax: Các băng được WiMax. .. (Wireless Broadband Access-WBA) WiMax cũng được xem là một công nghệ WBA nên có thể sử dụng băng tần này cho WiMax Vì vậy, WiMax Forum đã thống nhất lựa chọn băng tần này cho WiMax Trang 24 _ Các hệ thống WiMax ở băng tần này sử dụng chuẩn 802.16-2004 để cung cấp các ứng dụng cố định và nomandic, độ rộng phân kênh là 3.5MHz hoặc 7MHz, chế độ song công TDD hoặc FDD Một số nước... Multi Out –MIMO) Lớp truy nhập : Chuẩn 802.16 của IEEE đưa ra cùng một lớp MAC cho tất cả lớp PHY (đơn sóng mang, 256 OFDM, 2048 OFDMA) Lớp MAC này là kết nối được định hướng điểm- đa điểm Hoạt động truy nhập kênh ở lớp MAC của WiMax hoàn toàn khác so với WiFi WiMax hỗ trợ phương pháp truyền song công FDD và TDD sử dụng kỹ thuật truy nhập TDMA /OFDMA Ưu điểm của phương pháp này là nó cho phép linh động... Layer Tranmission Physical Layer Mô hình OSI Kiến trúc phân lớp của WiMAX Hình 1.4 Phân lớp của WiMAX so với OSI 1.7 Ứng dụng của WiMAX và tình hình triển khai: Đối với các doanh nghiệp, WiMAX cho phép truy cập băng rộng với chi phí hợp lý Vì phần lớn các doanh nghiệp sẽ không được chia thành khu vực để có đường cáp, lựa chọn duy nhất của họ đối với dịch vụ băng rộng là từ các nhà cung cấp viễn thông... bật về tình hình WiMAX : Ngày 12/10/2006 Intel xuất xưởng chip WiMAX connection 2210 hỗ trợ các mạng WiMAX di động và cố định, sẽ tích hợp vào dòng sản phẩm CPEi 200 cho thiết bị hướng tới người tiêu dùng, như các modem không dây không dây tốc độ cao Trang 31 _ Hình 1.5 Chip Intel tích hợp công nghệ WiMAX Motorola đã có những hợp đồng lắp đặt mạng WiMAX ở nhiều nơi... hàng (CPE), thẻ hỗ trợ kết nối WiMAX dành cho máy tính, bộ vi xử lí WiMAX di động đang phát tirển và sử dụng trong các thiết bị của Motorola Nokia dự định tung sản phẩm điện thoại di động dùng công nghệ WiMAX vào nănm 2008 Cả Intel, Nokia, Samsung , Motorola đều hỗ trợ tiêu chuẩn mở WiMAX như kết nối Internet băng rộng không dây với các mạng di động thế hệ thứ ba Điểm yếu của các mạng di động 3G là tốc... động của hệ thống tùy thuộc vào địa hình, địa vật giữa CPE và BS Hệ thống đã hoạt động được với khoảng cách 2.2km và có thể lớn hơn Anten của CPE là anten định hướng nên SU chỉ thu tốt với những vị trí phù hợp Tại cùng vị trí đặt SU ở các góc khác nhau, công suất thu, tỉ lệ lỗi bit BER của CPE khác nhau - Hệ thống điện thoại VoIP trên nền WiMAX: Đối với chất lượng thoại VoIP trên nền Công nghệ WiMAX, . QAM_data_out_4 (1 + (i -1) /2) case –3 QAM_data_out_pol(i) = -1; QAM_data_out_pol(i +1) = -1; case 1 QAM_data_out_pol(i) = -1; QAM_data_out_pol(i +1) = 1; case 1 QAM_data_out_pol(i) = 1; QAM_data_out_pol(i +1) . trung binh xxx (1+ (i -1) /2) = mean(cos_temp); yyy (1+ (i -1) /2) = mean(sin_temp); % Khoi phuc du lieu thanh dang noi tiep QAM_data_out_4(i) = xxx (1+ (i -1) /2); QAM_data_out_4(i +1) = yyy (1+ (i -1) /2); end %. bin2eight(output (1 + (i -1) *8:(i -1) *8 + 8)); end %chuyen doi khoang dong tu 0:255 den -1: 1 output_samples = (output_samples_big -12 7) /12 8; %am thanh ngo ra wavwrite(output_samples, 11 025, 8, 'OFDM_out.wav') if