OFDM仿真

迈不过友情╰ 2021-12-05 13:23 329阅读 0赞

理论懒得推了,直接上代码吧。图也不上了,自己去画吧。

  1. close all
  2. %% generate data source and map them to qpsk symbols
  3. N = 512;
  4. M = 4;
  5. src = randi([1, M], N,1);
  6. qpsk_set = [1+1i -1+1i -1-1i 1-1i]';
  7. src_sym = qpsk_set(src);
  8. %% ifft and add cp
  9. cp_len = 32;
  10. src_mod = ifft(src_sym);
  11. src_mod = src_mod / max(abs(src_mod));
  12. src_wave = [src_mod(end-cp_len+1:end); src_mod]; % add cp
  13. %% transmit sig through channel (isi and noise)
  14. h = [0.9 0.4 0.1]';
  15. rx_wave = conv(src_wave, h);
  16. noise = randn(size(rx_wave)) / 1e15;
  17. rx_wave = rx_wave + noise;
  18. %% remove cp and fft
  19. sample_start = cp_len;
  20. rx_2fft = rx_wave(sample_start + 1:sample_start + N); % remove cp
  21. rx_fft = fft(rx_2fft);
  22. %% phase rotation compensation
  23. h_inverse_tmp1 = exp(-2*1i*pi*(0:N-1)'/N);
  24. h_inverse_tmp2 = h_inverse_tmp1.^2;
  25. h_inverse = 1 ./ ( 0.9 + 0.4 * h_inverse_tmp1 + 0.1 * h_inverse_tmp2 );
  26. hat_src = h_inverse .* rx_fft;
  27. %% plot result
  28. figure;
  29. plot(src_sym,'ro');
  30. figure;
  31. plot(hat_src,'b*');

转载于:https://www.cnblogs.com/songtianyu/p/7192534.html

发表评论

表情:
评论列表 (有 0 条评论,329人围观)

还没有评论,来说两句吧...

相关阅读