* Google Custom Search

* Chat Box

Refresh History
  • NguyễnNhật Trường: sao vẫn chưa có tiến triễn gì vậy
    January 07, 2016, 01:43:57 AM
  • NguyễnNhật Trường: diễn đàn ơi là diễn đàn
    January 03, 2016, 01:07:24 PM
  • kiennguyen25: :D
    January 02, 2016, 06:43:47 PM
  • NguyễnNhật Trường: bao giờ anh ơi
    January 01, 2016, 12:16:16 PM
  • t h o n g - n t: :)
    December 31, 2015, 11:08:43 PM
  • hailuathanhnam_0808: Sắp có 1 sự thay đổi lớn cho diễn đàn của chúng ta
    December 31, 2015, 10:16:37 AM
  • kiennguyen25: #nolovenolife bạn muốn hỏi gì? mình có thể tư vấn cho bạn
    December 29, 2015, 08:25:57 PM
  • thuongdt: :)
    December 27, 2015, 09:59:04 AM
  • sanglk224: Đã qua 1 thời gian dài,bây giờ mình mới trở lại forum này
    December 16, 2015, 10:36:03 PM
  • sanglk224: ;D
    December 16, 2015, 10:34:18 PM
  • chucvn: dạo này ít người onl quá @@
    December 09, 2015, 03:08:36 PM
  • dat_ict: Bạn nào cần tư vấn về server và chỗ đặt server thì liên hệ với mình nhé: SDT 0902103635
    December 02, 2015, 04:57:21 PM
  • nolovenolife: òa òa , mình học ngành điện tử viễn thông mà chưa biết tý gì về ngành này , hoang mang quá , không biết bắt đầu học từ đâu
    November 24, 2015, 08:05:38 PM
  • nolovenolife: @@!
    November 24, 2015, 08:04:57 PM
  • VP Cường: b oi b giúp mình với mình đang phải tim hiểu về LMDS trong phần kiến trúc LMDS có hình vẽ mình k hiểu
    November 12, 2015, 11:28:42 PM
  • VP Cường: ffffffffffffffff
    November 12, 2015, 11:28:13 PM
  • Phương Việt: mn ai giúp mình thiết kế mạch nhân 2 số 4 bit không dấu với
    November 04, 2015, 11:40:13 PM
  • viethoang.bk: ai có tài liệu về góc ngẩng của anten ko cho e xin với
    October 30, 2015, 12:52:17 PM
  • kiennguyen25: thấy ít người online thế nhờ :D
    October 07, 2015, 09:34:20 AM
  • kiennguyen25: hello mọi người :D
    October 07, 2015, 09:33:47 AM

Author Topic: Cần trợ giúp mô phỏng Matlab---> Vào đây anh em sẽ giúp!  (Read 6433 times)

Offline hvhkvn

  • Junior Member
  • Posts: 3
Em đang nghiên cứu đề tài điều chế số9QPSK,QAM,GMSK) và mô phỏng bằng Matlab, em đã viết code mô phỏng các loại điều chế rồi nhưng chỉ mô phỏng được giản đồ chòm sao còn ra BER thì không làm được vì không biết liên kết các code hay cách nào khác nữa. Mà mục tiêu cuối cùng của đề tài là mô phổng được BER, anh biết thì chỉ giúp em với. Thanks!(email:nguyenhuuan1008@gmail.com)

Offline hvhkvn

  • Junior Member
  • Posts: 3
Xin trợ giúp code Matlab
« Reply #1 on: June 19, 2011, 04:47:49 PM »
Em có đoạn code mô phỏng điều chế số mà khi chạy thì báo lỗi, em tìm mãi mà khôn sửa đựơc, anh chị nào biết xem giúp và hướng dẫn cho em với, em cảm ơn nhiều:
% code final tinh ber cho bpsk, qpsk, 16qam, 64qam tren kenh fading + awgn
clc; clear all; close all;
tic;
N = 3e5;
t1=cputime;
Rb = 2e5;%
Tb = 1/Rb;
fc = 2.5e9; %0.9e9;%
fs = 16e8;
Ts = 1/fs;
M = 16; k = log2(M); L = 2^(k/2);
ks = fs/Rb;
kqpsk = log2(4);
% kenh truyen fading
v = 10;% toc do di chuyen
fd = (v*1e3/3600)*fc/(3e8);

% vong lap theo tung gia tri EbN0dB
EbN0dB = 1:2:45; % energy of bit per noise (dB)
EbN0 = 10.^(EbN0dB/10);
interr = 1;

% khoi tao du lieu
data_int = randint(1,N);

frame_len = 3e4; %mot frame co 30.000 bit
soframe = N/frame_len; % tong so frame
datafr = zeros(1,frame_len);

tx = [];
fadtx = [];

neqpsk = 0;
datarx = [];
ne = zeros(1,length(EbN0dB));
ne1 = zeros(1,length(EbN0dB));
ne2 = zeros(1,length(EbN0dB));
ber = zeros(1,length(EbN0dB));
ber1 = zeros(1,length(EbN0dB));
ber2 = zeros(1,length(EbN0dB));
fr_lentx = length(tx)/soframe;

for i=1:length(EbN0dB)  
    tic;
   
   
    fprintf('EbN0dB : %dn', EbN0dB(i));
   % so lan lap cho mot gia tri EbN0
   % khoi tao cac gia tri number of error cho qam
   
   %%%%%%%%%%%%%%%%%
   %% dieu che thich nghi QPSK
   if(EbN0dB(i)> 27)
      for inter = 1:interr
        fprintf('ninter :');fprintf('%d',inter);
        chan1 = stdchan(1/Rb,fd,'cost207RAx4');
        chan1.NormalizePathGains = 1;
        chan1.ResetBeforeFiltering = 0;
        chan1.StoreHistory = true;

        fprintf('n Frame:');
        for fr =1:soframe     

          fprintf(' %d', fr);
          % dieu che  
          datafr(fr,:) = data_int((fr-1)*frame_len+1:fr*frame_len);    
          data = datafr(fr,:);
          tx = qamModul(data,4);
          Eb = sum(abs(tx.*tx))./length(tx);

          fad = abs(filter(chan1,ones(size(tx))));
          txFade = fad.*tx;
          % giai dieu che
          rx = txFade;
          var = sqrt(Eb./(2*(log2(4))*EbN0(i)));%(fs/2)*
          noise = var*(randn(1,(frame_len/(log2(4)))) + 1i*randn(1,(frame_len/(log2(4)))));

          % giai dieu che kenh awgn
          rxSig = rx + noise; %awgn(rx,EbN0dB(i),'measured','db'); % rx;%;%a
          datarx = qamDemodul(rxSig./fad,4);

          % tinh tong so loi sau khi giai dieu che
          err(fr) = biterr(datarx,data);   
        end % end for so frame
        ne_inter(inter) = sum(abs(err));
      end
      %% dieu che thich nghi 16QAM neu EBN0dB = [21,27]
   elseif (EbN0dB(i) >= 21 ?? EbN0dB(i) <= 27)
       for inter = 1:interr
        fprintf('ninter :');fprintf('%d',inter);
        chan1 = stdchan(1/Rb,fd,'cost207RAx4');
        chan1.NormalizePathGains = 1;
        chan1.ResetBeforeFiltering = 0;
        chan1.StoreHistory = true;

        fprintf('n Frame:');
        for fr =1:soframe     

          fprintf(' %d', fr);
          % dieu che  
          datafr(fr,:) = data_int((fr-1)*frame_len+1:fr*frame_len);    
          data = datafr(fr,:);
          tx = qamModul(data,16);
          Eb = sum(abs(tx.*tx))./length(tx);%)/log2(M3));%length(tx_qam16); %(frame_len/log2(M3));%

          fad = abs(filter(chan1,ones(size(tx))));
          txFade = fad.*tx;
          % giai dieu che
          rx = txFade;
          var = sqrt(Eb./(2*(log2(16))*EbN0(i)));%(fs/2)*
          noise = var*(randn(1,(frame_len/(log2(16)))) + 1i*randn(1,(frame_len/(log2(16)))));

          % giai dieu che kenh awgn
          rxSig = rx + noise; %awgn(rx,EbN0dB(i),'measured','db'); % rx;%;%a
          datarx = qamDemodul(rxSig./fad,16);

          % tinh tong so loi sau khi giai dieu che
          err(fr) = biterr(datarx,data);   
        end % end for so frame
        ne_inter(inter) = sum(abs(err));
       end
       %% dieu che 64QAM neu EbN0 <21
      else (EbN0dB(i) < 21)
        for inter = 1:interr
        fprintf('ninter :');fprintf('%d',inter);
        chan1 = stdchan(1/Rb,fd,'cost207RAx4');
        chan1.NormalizePathGains = 1;
        chan1.ResetBeforeFiltering = 0;
        chan1.StoreHistory = true;

        fprintf('n Frame:');
        for fr =1:soframe     

          fprintf(' %d', fr);
          % dieu che  
          datafr(fr,:) = data_int((fr-1)*frame_len+1:fr*frame_len);    
          data = datafr(fr,:);
          tx = qamModul(data,64);
          Eb = sum(abs(tx.*tx))./length(tx);%)/log2(M3));%length(tx_qam16); %(frame_len/log2(M3));%

          fad = abs(filter(chan1,ones(size(tx))));
          txFade = fad.*tx;
          % giai dieu che
          rx = txFade;
          var = sqrt(Eb./(2*(log2(64))*EbN0(i)));%(fs/2)*
          noise = var*(randn(1,(frame_len/(log2(64)))) + 1i*randn(1,(frame_len/(log2(64)))));

          % giai dieu che kenh awgn
          rxSig = rx + noise; %awgn(rx,EbN0dB(i),'measured','db'); % rx;%;%a
          datarx = qamDemodul(rxSig./fad,64);

          % tinh tong so loi sau khi giai dieu che
          err(fr) = biterr(datarx,data);   
        end % end for so frame
        ne_inter(inter) = sum(abs(err));
       end
     
     
    end % end vong if - else
    %%%%%%%%%%%%%%%%%
   
    %%%%%%%%%%%%%%
    %% dieu che qpsk khong su dung thich nghi
    for inter = 1:interr
        fprintf('ninter :');fprintf('%d',inter);
        chan1 = stdchan(1/Rb,fd,'cost207RAx4');
        chan1.NormalizePathGains = 1;
        chan1.ResetBeforeFiltering = 0;
        chan1.StoreHistory = true;

        fprintf('n Frame:');
        for fr =1:soframe  
          fprintf(' %d', fr);
          datafr(fr,:) = data_int((fr-1)*frame_len+1:fr*frame_len);    
          data = datafr(fr,:);
          tx1 = qamModul(data,4);
          Eb1 = sum(abs(tx1.*tx1))./length(tx1);%)/log2(M3));%length(tx_qam16); %(frame_len/log2(M3));%
          fad1 = abs(filter(chan1,ones(size(tx1))));
          txFad1 = fad1.*tx1;              
          % giai dieu che
          rx = txFad1;
         
          var1 = sqrt(Eb1./(2*(log2(4))*EbN0(i)));%(fs/2)*
          noise1 = var1*(randn(1,(frame_len/(log2(4)))) + 1i*randn(1,(frame_len/(log2(4)))));
         
          % giai dieu che kenh awgn
          rx1 = rx + noise1; %awgn(rx,EbN0dB(i),'measured','db'); % rx;%;%a
          datarx1 = qamDemodul(rx1./fad1,4);
         
          % tinh tong so loi sau khi giai dieu che
          err1(fr) = biterr(datarx1,data);   
          end % end if - else
        ne_inter1 = sum(abs(err1));
      end % end for inter
   
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %% dieu che 16 QAM khong thich nghi
   
   for inter = 1:interr
        fprintf('ninter :');fprintf('%d',inter);
        chan1 = stdchan(1/Rb,fd,'cost207RAx4');
        chan1.NormalizePathGains = 1;
        chan1.ResetBeforeFiltering = 0;
        chan1.StoreHistory = true;

        fprintf('n Frame:');
        for fr =1:soframe  
          fprintf(' %d', fr);
          datafr(fr,:) = data_int((fr-1)*frame_len+1:fr*frame_len);    
          data = datafr(fr,:);
          tx2 = qamModul(data,16);
          Eb2 = sum(abs(tx2.*tx2))./length(tx2);%)/log2(M3));%length(tx_qam16); %(frame_len/log2(M3));%
          fad2 = abs(filter(chan1,ones(size(tx2))));
          txFad2 = fad2.*tx2;              
          % giai dieu che
          rx2 = txFad2;
         
          var2 = sqrt(Eb2./(2*(log2(16))*EbN0(i)));%(fs/2)*
          noise2 = var2*(randn(1,(frame_len/(log2(16)))) + 1i*randn(1,(frame_len/(log2(16)))));
         
          % giai dieu che kenh awgn
          rx2 = rx2 + noise2; %awgn(rx,EbN0dB(i),'measured','db'); % rx;%;%a
          datarx2 = qamDemodul(rx2./fad2,16);
         
          % tinh tong so loi sau khi giai dieu che
          err2(fr) = biterr(datarx2,data);   
          end % end if - else
        ne_inter2 = sum(abs(err2));
      end % end for inter
   
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %% dieu che 64 QAM khong thich nghi
   
   for inter = 1:interr
        fprintf('ninter :');fprintf('%d',inter);
        chan1 = stdchan(1/Rb,fd,'cost207RAx4');
        chan1.NormalizePathGains = 1;
        chan1.ResetBeforeFiltering = 0;
        chan1.StoreHistory = true;

        fprintf('n Frame:');
        for fr =1:soframe  
          fprintf(' %d', fr);
          datafr(fr,:) = data_int((fr-1)*frame_len+1:fr*frame_len);    
          data = datafr(fr,:);
          tx3 = qamModul(data,64);
          Eb3 = sum(abs(tx3.*tx3))./length(tx3);%)/log2(M3));%length(tx_qam16); %(frame_len/log2(M3));%
          fad3 = abs(filter(chan1,ones(size(tx3))));
          txFad3 = fad3.*tx3;              
          % giai dieu che
          rx3 = txFad3;
         
          var3 = sqrt(Eb3./(2*(log2(64))*EbN0(i)));%(fs/2)*
          noise3 = var3*(randn(1,(frame_len/(log2(64)))) + 1i*randn(1,(frame_len/(log2(64)))));
         
          % giai dieu che kenh awgn
          rx3 = rx3 + noise3; %awgn(rx,EbN0dB(i),'measured','db'); % rx;%;%a
          datarx3 = qamDemodul(rx3./fad3,64);
         
          % tinh tong so loi sau khi giai dieu che
          err3(fr) = biterr(datarx3,data);   
          end % end if - else
        ne_inter3 = sum(abs(err3));
      end % end for inter
    %%%%%%%%%%%%%%%%%%%%%%%%%
    %% tinh so bit loi    
    ne(i) = sum(abs(ne_inter))/interr;
    ne1(i) = sum(abs(ne_inter1))/interr;
    ne2(i) = sum(abs(ne_inter2))/interr;
    ne3(i) = sum(abs(ne_inter3))/interr;
   
    fprintf(' Ne(%d): %dt',i,ne(i));
    %disp(ne);disp(ne1);disp(ne2);
    ber(i) = ne(i)/N;
    ber1(i) = ne1(i)/N;
    ber2(i) = ne2(i)/N;
    ber3(i) = ne3(i)/N;
    toc
end % end for EbN0

% tinh ber theo ly thuyet
qpskFad = berfading(EbN0dB,'qam',4,1);
qam16Fad = berfading(EbN0dB,'qam',16,1);
qam64Fad = berfading(EbN0dB,'qam',64,1);
%save('berqamAdap_1','N','M','Rb','fc','v','ne','ne1','ne2','ber','ber1','ber2','chan1','chan2');
%ve gian do ber - ebn0
%figure;
semilogy(EbN0dB,ber,'g-o','Linewidth',4); hold on;grid on;
semilogy(EbN0dB,qpskFad,'r-.'); hold on;
semilogy(EbN0dB,qam16Fad,'b-.'); hold on;
semilogy(EbN0dB,qam64Fad,'k-.'); hold on;
semilogy(EbN0dB,ber1,'r-x','Linewidth',2); hold on;
semilogy(EbN0dB,ber2,'b-x','Linewidth',2); hold on;
semilogy(EbN0dB,ber3,'k-x','Linewidth',2); hold on;
legend('Adaptive QAM','QPSK fading theory','QAM16 fading theory','QAM64 fading theory',...
    'QPSK kenh Rural Area','16QAM kenh Rural Area','64QAM kenh Rural Area');
%axis([0 45 10^-4 1]);
title(['BER adaptive QAM tren kenh truyen fading Rural Area voi Rb ',int2str(Rb/1e3),'kbps, fc ',int2str(fc/1e6),'MHz, v ',int2str(v),'km/h']);
%grid on;

t2=cputime;
tongsophut1 = (t2-t1)/60;
disp(tongsophut1);
Mọi chi tiết liên hệ qua email:nguyenhuuan1008@gmail.com

Offline biladen111191

  • Junior Member
  • Posts: 1
Hỏi về vẽ tín hiệu Matlab
« Reply #2 on: June 24, 2011, 01:17:15 PM »
Mọi người giúp em với ạ!
Cho tín hiệu băng gốc là tín hiệu hình sin với tần số 20Hz, sóng mang 10khz (điều chế AM), Vẽ tín hiệu tại anten đầu thu, dưới tác động kênh nhiễu trắng Gauss có SNR = 10 dB

Offline Hieuphong

  • Junior Member
  • Posts: 33
Theo mình thì thế này>
+) bạn lấy tín hiệu x=sin(2*pi*fo*t)  % fo=20 hz
+) tín hiệu sóng mang y=sin(2*pi*f1*t)
+) tín hiệu nhiễu là N=ran(n);
tín hiệu nhận được là RX= x+y+N;
bạn vẽ tín hiệu Rx dùng hàm plot

Offline student_dtvt

  • Junior Member
  • Posts: 17
Bài toán thiết kế :
Thiết kế bộ lọc thông thấp theo cấu trúc IIR sử dụng bộ lọc ELLIPTIC và phương pháp biến đổi bất biến xung.


Bác nào có cái này ko share cho em với!

Offline Pham Tuan

  • Junior Member
  • Posts: 1
Chào các bạn!
Mình dùng Matlab để mô phỏng đồ án, khi chạy file.m thì báo lỗi thế này:
??? Undefined function or method 'fir1' for input arguments of type 'double'.

Error in ==> chuongtrinh at 123
  B = o.upfactor * fir1( o.filterorder,  1 / o.upfactor );
Dịch ra thì là do không có hàm fir1 nên Matlab không hiểu để thực hiện lệnh: B = o.upfactor * fir1( o.filterorder,  1 / o.upfactor ); trong chương trình chuongtrinh.
Mình đã tìm hiểu rồi nhưng không biết hàm fir1 nó ở đâu mà add vô thư mục hàm của Matlab 7.6.0 R2008a mà mình đang dùng cả.
Bạn nào có thể giúp mình được không?
Cảm ơn trước.

Offline ngapmut

  • Junior Member
  • Posts: 1
Em đang định làm đề tài luận văn về "mô phỏng mạch điện tử 3 bằng matlab". Xin cho em hỏi: matlab có mô phỏng được các mạch điện tử được không???.Vd như: transistor nối với các linh kiện điện trở,tụ điện...Xin mấy anh giúp em cho ý kiến với. Em xin cảm ơn nhiều lắm ạ.

Offline bancu_pt

  • Junior Member
  • Posts: 15
mô phỏng hệ thông viển thông bằng Matlab
« Reply #7 on: August 20, 2012, 07:55:40 PM »

em đang làm đề tài mô phỏng hệ thống viển thông, nhưng chỉ mới làm được thế này, anh chị nào có thể giúp em nên làm nhửng phần nào nửa ko ạ, và cho em xin tài liệu được không ạ. em cảm ơn




CHƯƠNG 1  TNG QUAN VMATLAB

 
1.1Khái niệm Matlab
1.1.1Khái quát

Matlab là ngôn ngữ lập trình thực hành bậc cao được sử dụng để giải các bài toán về kỹ thuật.Matlab tích hợp được việc tính toán, thể hiện kết quả, cho phép lập trình, giao diện rất dẽ dàng với người sử dụng. Dử liệu cùng với thư viện được lập trình sẵn cho phép người sử dụng có thể được nhửng ứng dụng sau đây.
Sử dụng các hàm có sẵn trong thư viện, các phép tính toán thông thường
Cho phép lập trình tạo ra các ứng dụng mới
Cho phép mô phỏng các mô hình thực tế
Phân tích, khảo sát và hiển thị dử liệu
Với phần mềm đồ họa cực mạnh
Cho phép phát triển giao tiếp với một số phần mềm khác như C++, Fortran.
Matlab đó là các ngôn ngử cao về ma trận và mảng, với các dòng lệnh, các hàm, cấu trúc dử liệu vào, có thể lập trình hướng đối tượng
 
1.1.2. Ứng dụng
Matlab tạo điều kiện thuận lợi cho:
Các khóa học về toán học
Các kỹ sư, các nhà giáo nghiên cứu khoa học
Dùng Matlab để tính toán, nghiên cứu tạo ra các sản phẩm tốt nhất trong sản xuất


1.1.3. Giới thiệu về Toolbox
Công cụ này được Matlab cung cấp cho phép bạn ứng dụng các kỹ thuật để phân tích thiết kế, mô phỏng các mô hình
Ta có thể tìm thấy Toolbox ở trong môi trường làm việc của mạng nowrowrron, logic mở, Simulink

1.1.4. Hệ thống Matlab
        Hệ thống giao diện Matlab được chia thành 5 phần:
+ Môi trường phát triển. Đây là nơi đặt các thanh công cụ, các phương tiện giúp chúng ta sử dụng các lệnh và các file
+ Desktop
+ Command Window
+ Command History
+ Browsers for viewing help

1.1.5. Thư viện, các hàm toán học
Bao gồm các cấu trúc như tính tổng,sin cosin atan… các phép tính đơn giản đến các phép tính phức tạp như tính ma trận nghịch đảo, trị riêng…

1.2. Giới thiệu các khối trong Matlab
        Trong Matlab có rất nhiều khối chức năng thực hiện từng công việc khác nhau. Ở đây chúng em chỉ giới thiệu một vài khối được sử dụng để mô phỏng các phương pháp điều chế như đả nêu
1.2.1. Khối Random Interger Generator
1.2.2. Khối QAM Scatter Plot Scope
1.2.3. Khối General QAM Modulator Baseband
1.2.4 .Khối Display
Khối này chấp nhận và đưa ra các tín hiệu thực hiện hay phức của bất kỳ dữ liệu nào mà Simulink cung cấp, bao gồm các kiểu dữ liệu điểm kết hợp
1.2.5. Khối Discrete-Time Scatter Plot Scop
1.2.6. Khối Rectangular QAM Modulator Baseband

Đây là một số khối dùng để mô phỏng trong Matlab. Tiếp theo chúng ta sẻ đi tìm hiểu về nhửng phương pháp điều chế cụ thể

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CHƯƠNG 2 : TỔNG QUAN VỀ OFDM VÀ CHƯƠNG TRÌNH MÔ PHỎNG HỆ THỐNG OFDM BẰNG MATLAB


 
2.1 Khái niêm OFDM
    Kỹ thuật điều chế OFDM là một trường hợp đặc biệt của phương pháp  điều chế đa sóng mang trong đó trong đó các sóng mang phụ trực giao với nhau,nhờ vậy phổ tín hiệu ở các sóng mang phụ cho phép chồng lấn lên nhau mà phía thu cũng có thể khôi phục lại tín hiệu ban đầu. Sự chồng lấn phổ tín hiệu làm cho hệ thống OFDM có hiệu suất  sử dụng phổ tín hiệu  lớn hơn nhiều so với các kỹ thuật điều chế thông thường.
OFDM là một công nghệ điều chế và mã hóa số, đã được sử dụng thành công trong các ứng dụng hữu tuyến như modem DSL và modem cáp. Các sản phẩm của các công ty thành viên Diễn đàn WiMAX đang sử dụng các hệ thống 802.16 dựa trên OFDM để vượt qua những thách thức của việc truyền sóng NLOS.
OFDM đạt đến tốc độ và hiệu quả dữ liệu cao nhờ sử dụng nhân chồng các tín hiệu sóng mang thay cho chỉ một tín hiệu. Ưu điểm quan trọng của OFDM của các cơ chế điều chế đơn sóng mang đơn là khả năng mang lại hiệu suất băng thông cao hơn và do đó thông lượng dữ liệu sẽ cao hơn thậm chí phải đối mặt thách thức với kịch bản triển khai chẳng hạn như các đường kết nối NLOS phải chịu suy hao đáng kể do các điều kiện đa đường.
2.2Đặc điểm OFDM
      2.2.1 NGUYÊN LÝ CƠ BẢN CỦA OFDM

OFDM phân chia kênh truyền theo cả miền tần số và miền thời gian(hình2.1)
              
   Hình 2.1.Điều chế OFDM làm tăng hiệu quả sử dụng băng tần và làm giảm nhiễu

 
    -Miền tần số chia thành nhiều băng con.
   -Miền thời gian chia liên tiếp thành nhiều khe thời gian.
Mỗi một ô(tần số-thời gian) được bố trí một sóng mang,mỗi khe thời gian chứa N sóng mang gọi là một ký hiệu OFDM(OFDM symbol).Trong mỗi khoảng thời gian đó,các    sóng mang được điều chế với vài bit dữ liệu,số bit truyền trên mỗi sóng mang tuỳ thuộc   vào loại điều chế như BPSK là 1 bit,QPSK là 2 bit,8-PSK là 3 bit,16-PSK là 4 bit ….mỗi ký hiệu OFDM chứa N sóng mang.tập hợp một số lượng nhất định ký hiệu OFDM tạo thành một khung truyền dẫn.

 
  Phổ của tín hiệu OFDM do các sóng mang trực giao với nhau nên khi ghép với nhau,phổ của chúng có thể trùng lên nhau mà không ảnh hưởng  lẫn nhau.Trong FDM (ghép kênh đa phân chia tần số) các tần số không có quan hệ này nên để tránh nhiễu giữa các tần số kề nhau thì phổ của các kênh không được chồng lên nhau.Vì vậy độ rộng băng tần của FDM lớn hơn OFDM.với mỗi sóng mang tồn tại thời gian là Ts,phổ của nó là hàm sin có độ rộng là 2/Ts.Giả sử có 5 sóng mang ứng với 5 tần số khác nhau,dùng kỹ thuật FDM thì độ rộng băng tần theo yêu cầu là:Btdm = 5*2/Ts = 10/Ts,dùng kỹ thuật OFDM thì băng tần yêu cầu còn lại là: Bofdm  =5*∆f = 5*1/Ts =5/Ts.Như vậy đối với kỹ thuật OFDM thì hiệu suất phổ cao hơn so với FDM.
                     
                  
              
                                   →|                  |←
                                        Độ rộng băng tần
                          
                Hình 2.2.Độ rộng băng tần của OFDM khi có 5  sóng mang
 
2.2.2 SƠ ĐỒ KHỐI CỦA HỆ THỐNG TIN DÙNG OFDM

 
      Phía máy phát dữ liệu vào nối tiếp trước tiên được nhóm thành từng tổ hợp M    bít,sau đó chuyển thành dữ liệu song song.mỗi tổ hợp phù hợp với kiểu điều chế số (M-PSK) được sử dụng trên mỗi sóng mang.IFFT chuyển đổi từng ký hiệu OFDM miền thời gian.Khoảng an toàn được chèn vào giữa các ký hiệu OFDM để tránh nhiễu xuyên ký hiệu ISI (INTER-SYMBOL-INTERFERENCE),gây ra bởi méo đa đường. cuối cùng các ký hiệu rời rạc được chuyển đổi thành tương tự,được lọc thông thấp rồi chuyển lên cao tần RF để  phát lên kênh truyền dẫn.Máy thu xử lý ngược lại quá trình phát,sau khi loại bỏ khoảng an toàn,khối FFT chuyển đổi tín hiệu thu được từ miền thời gian sang miền tần số.tiếp theo tín hiệu được đưa qua giải điều chế số và chuyển đổi song song thành nối tiếp để khôi phục lại dữ liệu ban đầu.                                          
Do nhiễu sóng mang nên rất rễ gây nhiễu xuyên sóng mang ICI.để tránh điều này kỹ thuật OFDM bố trí các sóng mang trực giao,có nghĩa là khoảng cách giữa các sóng mang bằng nghịch đảo của thời gian một ký hiệu Ts.
               SHAPE * MERGEFORMAT     

 
Dữ liệu vào nối tiếp

 
   

 

Chuyển đổi
nối tiếp/song song

 
     

 


Điều chế
số

 
      

 


IFFT

 
   

 

Chèn
khoảng
An toàn

 
   

 












Kênh
Truyền
Dẫn

 
   

 

Loại bỏ
Khoảng
An toàn

 
   

 



FFT

 
   

 


Giải điều
Chế số

 
   

 


Chuyển đổi
song song/nối tiếp

 
   

 
Dữ liệu ra nối tiếp

 
                    

 


Nhiễu

 
                                          
                  Hình 2.3 Sơ  đồ khối hệ thống thông tin dùng OFDM    
 
 
 
           
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.3 CHƯƠNG TRÌNH MÔ PHỎNG HỆ THỐNG OFDM
Đây là chương trình được viết bằng Matlab, chương trình bao gồm sơ đồ khối mô phỏng sự phát và thu OFDM, mô phỏng kênh truyền, so sánh tín hiệu OFDM và QAM, sơ đồ khối mô phỏng hệ thống OFDM bằng simulink của Matlab.

 
2.3.1 Mô phỏng hệ thống OFDM bằng simulink
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 Hình 2.4 Sơ đồ khối bộ phát và thu tín hiệu OFDM
Đầu tiên, bộ phát nhị phân Bernoulli sẽ tạo chuỗi tín hiệu. Chuỗi dữ liệu đầu vào được mã hoá bởi bộ mã Reed-Solommon và được điều chế bởi bộ Mapping QPSK. IFFT là hữu ích cho OFDM vì nó phát ra các mẫu của dạng sóng có thành phần tần số thoả mãn điều kiện trực giao. Dữ liệu sau khi được biến đổi sẽ được chèn thêm CP và chuỗi huấn luyện để giúp cho qua trình ước lượng kênh và đồng bộ ở máy thu.
Mô phỏng kênh truyền đưa ra các đặc trưng của kênh truyền vô tuyến chung như nhiễu, đa đường và xén tín hiệu. Dùng hai khối trong Matlab: Multipath Rayleigh fading, AWGN
Tín hiệu thu sau khi loại bỏ CP và chuỗi huấn luyện sẽ được đưa vào IFFT để chuyển các mẫu miền thời gian trở lại miền tần số. Đưa vào bộ ước lượng kênh và bù kênh để giảm ảnh hưởng kênh truyền đến tín hiệu. Cuối cùng, tín hiệu được giải điều chế và giải mã RS
 
 SHAPE * MERGEFORMAT       

 
Hình 2.6 Phổ tín hiệu OFDM nhận

 
     

 
Hình 2.5 Phổ tín hiệu OFDM truyền

 
                
 
 


 
 
 SHAPE * MERGEFORMAT     

 
Hình 2.7 Dạng sóng tín hiệu OFDM truyền

 
     

 
Hình 2.8 Dạng sóng tín hiệu OFDM nhận

 
      
 SHAPE * MERGEFORMAT     

 Hình 2.10 Chòm sao QPSK sau CE

 
     

 Hình 2.9 Chòm sao QPSK trước CE

 QPSK trước CE

 
      

Hình 2.5 và 2.6 cho thấy tác động của kênh truyền đến phổ tín hiệu OFDM. Vì kênh truyền là một kênh fading chọn lọc tần số nên phổ tín hiệu OFDM nhận ở những tần số khác nhau chịu sự tác động khác nhau. Hình 6.4 và 6.5 cho thấy biên độ tín hiệu OFDM nhận nhỏ hơn biên độ tín hiệu OFDM truyền đi.
Hình 2.9 và 2.10 cho thấy tác dụng của bộ ước lượng và bù kênh. Hình 2.9 chòm sao QPSK trước khi ước lượng kênh có biên độ và pha rất không ổn định. Hình 2.10 chòm sao QPSK sau khi ước lượng kênh những điểm chỉ dao động nhỏ quanh một vị trí cố định tức là biên độ và pha gần như ổn định.

2.3.2  Một số lưu đồ thuật toán của chương trình
2.3.2.1 Lưu đồ mô phỏng kênh truyền

   

 Bắt đầu

 
   

 
Chuyển đổi dữ liệu nhị phân {0,1} thành phân cực {-1,1}

 
   

 
Thực hiện IFFT

 
   

 Chuyển tín hiệu song song thành chuỗi nối tiếp

 
   

 Kết thúc

 
         

 
Hình 2.12 Lưu đồ mô phỏng phát ký tự OFDM

 
   

 Đọc dữ liệu vào

 
         
 
   

 Bắt đầu

 
   

 Chuẩn hóa tất cả các dữ liệu trước khi sử dụng kênh để so sánh

 
   

 Kết thúc

 
         

 
Hình 2.11 Lưu đồ mô phỏng
kênh truyền

 
   

 
Thiết lập và tính toán hiệu ứng xén tín hiệu

 
     

 
Thiết lập và tính toán hiệu ứng đa đường

 
     

 Thiết lập và tính toán nhiễu

 
   
 
 
 
 
 
 
 
 
 


















2.3.2.2 Lưu đồ mô phỏng thu phát tín hiệu OFDM

 
 SHAPE * MERGEFORMAT   

 Bắt đầu

 
   

 Chia dữ liệu thành tập hợp song song

 
   

 
Thực hiện FFT

 
   

 
Chuyển đổi dữ liệu phân cực {-1,1} thành nhị phân {0,1}

 
   

 Khôi phục dòng bit bởi đặt dữ liệu miền tần số thành chuỗi nối tiếp

 
   

 Kết thúc

 
           

 
Hình 2.13  Lưu đồ mô phỏng thu ký tự OFDM

 
   

 Ghi dữ liệu

 
   


2.3.2.3 Lưu đồ mô phỏng thu phát tín hiệu QAM
 
 
 SHAPE * MERGEFORMAT   

 Hình 2.14  Lưu đồ mô phỏng phát tín hiệu QAM

 
   

 Kết thúc

 
     

 Phát 16-QAM

 
     

 
Chuyển đổi dữ liệu nhị phân {0,1} thành phân cực {-1,1}

 
   

 
Nhập số sóng mang

 
   

 Chuyển dữ liệu phân cực {-1,1} thành 4 mức {-3,-1,1,3}

 
        

 
Số sóng mang = lũy thừa của 2

 
   

 
Nhập lại.Số sóng mang   phải là lũy thừa của 2

 
        

 Đ
 
      

 
S

 
   

 Bắt đầu

 
      

 Đọc dữ liệu vào

 
   
 
 






 
 SHAPE * MERGEFORMAT   

 Hình 2.15  Lưu đồ mô phỏng thu tín hiệu QAM

 
   

 Bắt đầu

 
   

 Khởi tạo mức 0 cho tốc độ

 
   

 
Tăng số lượng sóng mang cho dữ liệu gốc và thời hạn tần số cao

 
   

 
Khôi phục dữ liệu thành dạng nối tiếp

 
   

 
 Sắp xếp chính xác giữa các mức {-3,-1,1,3}

 
         

 
Chuyển dữ liệu phân cực {-1,1} thành nhị phân {0,1}

 
   

 Kết thúc

 
      

 Ghi dữ liệu ra

 
   

2.3.2.4 Lưu đồ mô phỏng thuật toán tính BER
 
 SHAPE * MERGEFORMAT   

 
Hình 2.16  Lưu đồ mô phỏng thuật toán tính BER

 
   

 Bắt đầu

 
   

 Số lượng bit lỗi = 0

 
   

 
i = 1

 
   

 

Lỗi = | Dữ liệu vào(i) - Dữ liệu ra(i)|


 
   

 
 Số bit lỗi = số bit lỗi + 1

 
   

 Kết thúc

 
         

 i=i+1

 
   

 
BER = 100*số bit lỗi/ Độ dài dữ liệu (%)

 
   

 Lỗi>0

 
   

 

i<= Độ dài dữ liệu vào


 
        

 
Đ

 
      

 S
 
     

 Đ
 
      

 
S

 
   
 
2.3.3 Kết quả chương trình mô phỏng
2.3.3.1 So sánh tín hiệu QAM và OFDM
 

Hình 2.17: Tín hiệu QAM và OFDM phát ở miền tần số
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Hình 5.15: Tín hiệu QAM và OFDM thu ở miền tần số
2.3.3.2 So sánh tín hiệu âm thanh được điều chế bằng QAM và OFDM
 

Hình 2.18 So sánh tín hiệu âm thanh được điều chế bằng phương thức
QAM và OFDM

Hình 2.18 cho chúng ta thấy phổ của tín hiệu OFDM rất giống với phổ tín hiệu của âm thanh ban đầu. Chứng tỏ phương thức điều chế OFDM  tốt hơn so với QAM

Trong chương cuối cùng này đã mô phỏng hệ thống OFDM bằng simulink của Matlab, với những scope để hiện thị tín hiệu giúp cho việc phân tính đánh giá tác động của kênh truyền đến tín hiệu, tác dụng của bộ ước lượng và bù kênh. Tuy nhiên, simulink này chỉ dừng lại ở mức độ đơn giản, tức là chỉ mô phỏng hệ thống OFDM băng gốc với phương thức điều chế QPSK. Trong chương cũng đã so sánh tín hiệu OFDM và tín hiệu QAM, file âm thanh của chúng để thấy rõ những ưu điểm của OFDM

 
 
 
MÔ PHỎNG HỆ THỐNG ODFM ĐIỂN HÌNH

 
 
Mô hình mô phỏng được cho ở hình 3.35. Khi này, ta mô phỏng tín hiệu OFDM có cấu trúc khung và đa khung. Theo đó, mỗi khung có độ lâu T[sub:2gy3yrdl]F[/sub:2gy3yrdl] gồm N[sub:2gy3yrdl]F[/sub:2gy3yrdl]  ký hiệu OFDM, mỗi đa khung gồm M[sub:2gy3yrdl]F[/sub:2gy3yrdl] khung (T[sub:2gy3yrdl]MF[/sub:2gy3yrdl] = M[sub:2gy3yrdl]F[/sub:2gy3yrdl]×T[sub:2gy3yrdl]F[/sub:2gy3yrdl]). Mỗi ký hiệu được tạo thành bởi một tập K (từ K[sub:2gy3yrdl]min[/sub:2gy3yrdl]đến K[sub:2gy3yrdl]max[/sub:2gy3yrdl]) sóng mang và được truyền trong khoảng thời gian T[sub:2gy3yrdl]S[/sub:2gy3yrdl]; T[sub:2gy3yrdl]S[/sub:2gy3yrdl] = T[sub:2gy3yrdl]U[/sub:2gy3yrdl] + Δ.. Các thông số cụ thể được cho ở bảng 3.4. Lưu ý rằng, ở đây ta dùng T[sub:2gy3yrdl]U[/sub:2gy3yrdl]=T[sub:2gy3yrdl]FFT[/sub:2gy3yrdl] và khoảng thời gian bảo vệ     Δ =T[sub:2gy3yrdl]G[/sub:2gy3yrdl]
 

Mô hình mô phỏng quá trình tạo và thu tín hiệu OFDM

 
 
 
 
 
Các tham số và các giá trị của chúng trong mô phỏng OFDM

 
 
Mô tả toán học
 
 
 
Nếu xét (3.22) trong khoảng thời gian từ t=0 đến t=T[sub:2gy3yrdl]S[/sub:2gy3yrdl] (tức là khảo sát trong một chu kỳ ký hiệu) thì (3.22) trở thành
               
Nếu thực hiện điều chế 4-QAM để chuyển tín hiệu băng tần cơ sở thành tín hiệu thông băng thì tín hiệu phát s(t) tương ứng với các thành phần đồng pha m[sub:2gy3yrdl]I[/sub:2gy3yrdl](t) và vuông pha m[sub:2gy3yrdl]Q[/sub:2gy3yrdl](t) là
 

Khi này (3.24) được khai triển như sau
       
Các kết quả mô phỏng
 
Kết quả mô phỏng phần phát
 
 
 
 
 
 
 
 
 
Kết quả mô phỏng phần thu
Tôi yêu em không phải vì em là ai mà tôi yêu em vì khi bên cạnh em tôi là ai!!

Offline manloyal

  • Junior Member
  • Posts: 1
Re: Cần trợ giúp mô phỏng Matlab---> Vào đây anh em sẽ giúp!
« Reply #8 on: January 10, 2013, 10:57:26 PM »
bạn bancu_pt có thể gửi mình file mô phỏng simulink ofdm với

Offline phongtran27

  • Global Moderator
  • Senior Member
  • Posts: 447
Re: Cần trợ giúp mô phỏng Matlab---> Vào đây anh em sẽ giúp!
« Reply #9 on: February 08, 2013, 12:39:54 PM »
bạn bancu_pt có thể gửi mình file mô phỏng simulink ofdm với

bạn có thể liên lạc qua tường cá nhân hoặc hộp thư trên diễn đàn cho nhanh nhé :)

Offline meohoang1102

  • Junior Member
  • Posts: 1
Anh chị giúp em với ạ...
Em làm mô phỏng về mô hình kênh trên matlab. Sử dụng demo có sẵn những trong đó không hiển thị tỷ lệ lỗi bit BER... Giờ em muốn hiển thị nó thì cần làm những gì ạ.Em mong nhận được sự giúp đỡ từ mọi người ạ.

Offline O_o

  • Junior Member
  • Posts: 1
Chào mọi người!
ACE nào có code matlab phần ghép kênh không gian MIMO hợp tác cho mình xin với.
Xin cảm ơn và hậu tạ.

Offline sevenpc

  • Junior Member
  • Posts: 2
Re: Cần trợ giúp mô phỏng Matlab---> Vào đây anh em sẽ giúp!
« Reply #12 on: September 14, 2014, 11:16:58 AM »
Bác nào có thời gian bổ túc cho em mấy buổi về mô phỏng hệ thống CO-OFDM. Em ở Từ Liêm, dt:01696908272 .Em xin hậu tạ