一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【通信】基于matlab Alamouti空频编码【含Matlab源码 801期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、Alamouti空频编码简介





三、部分源代码

clc
clear all
L=10000;   % 符号周期数
N=256;     % OFDM字载波个数
G=32;      % CP长度
M=2;       % 便于调制
Nt=3 ;      % 多径信道数 3
Nr=26;     % 多径信道数 26
snr=0:2:30;% 信噪比
%% 原始数据流
x_gene_bit= floor(rand(1,L*N*M)*2);
x_QPSK_in=reshape(x_gene_bit,M,L*N);for n_snr=1:length(snr)n_snrcnt=0;%% QPSK星座映射for ii=1:L*Nif x_QPSK_in(:,ii)==[0 0]'x_QPSK(ii)=(1+1i)/sqrt(2);elseif x_QPSK_in(:,ii)==[0 1]'x_QPSK(ii)=(-1+1i)/sqrt(2);elseif x_QPSK_in(:,ii)==[1 0]'x_QPSK(ii)=(1-1i)/sqrt(2);elseif x_QPSK_in(:,ii)==[1 1]'x_QPSK(ii)=(-1-1i)/sqrt(2);end     end%% 串并变换x_OFDM_in=reshape(x_QPSK,N,L);for ii=1:L%% 基于Alamouti的编码x_transmitter1(1:2:N)=x_OFDM_in(1:2:N,ii);               %第一个发射天线x_transmitter1(2:2:N)=-conj(x_OFDM_in(2:2:N,ii));x_transmitter2(1:2:N)=x_OFDM_in(2:2:N,ii);               %第二个发射天线x_transmitter2(2:2:N)=conj(x_OFDM_in(1:2:N,ii));%%  分别在第一个天线和第二个天线上进行OFDM  x_transmitter1  x_transmitter1;%% IFFTX_IFFT_1=sqrt(N)*ifft(x_transmitter1);                    % 功率归一化 *sqrt(N)X_IFFT_2=sqrt(N)*ifft(x_transmitter2);                    % 功率归一化 *sqrt(N)%% 加循环前缀X_add_cp_1=[X_IFFT_1([end-31:end]) X_IFFT_1];        X_add_cp_2=[X_IFFT_2([end-31:end]) X_IFFT_2];   %% 产生瑞利衰落的信道系数h_1=(1/(sqrt(2*Nt)))*(randn(1,Nt) + j*randn(1,Nt));      %产生Nt个信道系数h_2=(1/(sqrt(2*Nt)))*(randn(1,Nt) + j*randn(1,Nt));      %产生Nt个信道系数H_1=fft(h_1,N)/sqrt(N);                                  %对信道系数做FFTH_2=fft(h_2,N)/sqrt(N);%% 输出的信号Yy=conv(X_add_cp_1,h_1)+conv(X_add_cp_2,h_2)+normrnd(0,sqrt(10^((-snr(n_snr))/10)/2),1,N+Nt+G-1)+1i*normrnd(0,sqrt(10^((-snr(n_snr))/10)/2),1,N+Nt+G-1);%% 去循环前缀Y_de_cp=Yy(33:288);                y_FFT=(1/sqrt(N))*fft(Y_de_cp);        %% 类似于Alamouti 解码的线性解码算法解调符号     y_FFT_odd= y_FFT(1:2:N);y_FFT_even= y_FFT(2:2:N);H_1_odd=H_1(1:2:N);   %第一个发射天线信道的坐标为奇数H_1_even=H_1(2:2:N);  %第一个发射天线信道的坐标为偶数H_2_odd=H_2(1:2:N);   %第二个发射天线信道的坐标为奇数H_2_even=H_2(2:2:N);  %第二个发射天线信道的坐标为偶数h_1 = abs(H_1_odd).^2 + abs(H_2_even).^2;            H2 = abs(H_1_even).^2 + abs( H_2_odd).^2; x_est1 = (conj(H_1_odd).*y_FFT_odd +  H_2_even.*conj(y_FFT_even))./h_1;  x_est2 = (conj(H_2_odd).*y_FFT_odd - H_1_even.*conj(y_FFT_even))./H2;  xx(1:2:N) = x_est1;                                                    % 接收到的符号 xx(2:2:N) = x_est2;%% 解调x_de_QPSK_in=reshape(xx,1,N);for k=1:Nif real(x_de_QPSK_in(k))>0&&imag(x_de_QPSK_in(k))>0x_de_QPSK(:,k)=[0 0].';elseif real(x_de_QPSK_in(k))>0&&imag(x_de_QPSK_in(k))<0x_de_QPSK(:,k)=[1 0].';elseif real(x_de_QPSK_in(k))<0&&imag(x_de_QPSK_in(k))>0x_de_QPSK(:,k)=[0 1].';elseif real(x_de_QPSK_in(k))<0&&imag(x_de_QPSK_in(k))<0x_de_QPSK(:,k)=[1 1].';endend%% 计算比特错误数error=length(find(x_QPSK_in(:,((ii-1)*N+1):ii*N)~=x_de_QPSK));cnt=cnt+error;endber1(n_snr)=cnt/L/M/N;end
%%  多径数为26
for n_snrr=1:length(snr)n_snrrcnt=0;%% QPSK星座映射for ii=1:L*Nif x_QPSK_in(:,ii)==[0 0]'x_QPSK(ii)=(1+1i)/sqrt(2);elseif x_QPSK_in(:,ii)==[0 1]'x_QPSK(ii)=(-1+1i)/sqrt(2);elseif x_QPSK_in(:,ii)==[1 0]'x_QPSK(ii)=(1-1i)/sqrt(2);elseif x_QPSK_in(:,ii)==[1 1]'x_QPSK(ii)=(-1-1i)/sqrt(2);end     end%% 串并变换x_OFDM_in=reshape(x_QPSK,N,L);for ii=1:L%% 基于Alamouti的编码xx_transmitter1(1:2:N)=x_OFDM_in(1:2:N,ii);               %第一个发射天线xx_transmitter1(2:2:N)=-conj(x_OFDM_in(2:2:N,ii));xx_transmitter2(1:2:N)=x_OFDM_in(2:2:N,ii);               %第二个发射天线xx_transmitter2(2:2:N)=conj(x_OFDM_in(1:2:N,ii));%%  分别在第一个天线和第二个天线上进行OFDM  x_transmitter1  x_transmitter2;%% IFFTX_IFFT_1=sqrt(N)*ifft(xx_transmitter1);                   % 功率归一化 *sqrt(N)X_IFFT_2=sqrt(N)*ifft(xx_transmitter2);                   % 功率归一化 *sqrt(N)%% 加循环前缀X_add_cp_1=[X_IFFT_1([end-31:end]) X_IFFT_1];        X_add_cp_2=[X_IFFT_2([end-31:end]) X_IFFT_2];   %% 产生瑞利衰落的信道系数h_1=(1/(sqrt(2*Nr)))*(randn(1,Nr) + j*randn(1,Nr));      %产生Nr个信道系数h_2=(1/(sqrt(2*Nr)))*(randn(1,Nr) + j*randn(1,Nr));      %产生Nr个信道系数H_1=fft(h_1,N)/sqrt(N);                                  %对信道系数做FFTH_2=fft(h_2,N)/sqrt(N); %% 输出的信号Y=conv(X_add_cp_1,h_1)+conv(X_add_cp_2,h_2)+normrnd(0,sqrt(10^((-snr(n_snrr))/10)/2),1,N+Nr+G-1)+1i*normrnd(0,sqrt(10^((-snr(n_snrr))/10)/2),1,N+Nr+G-1);%% 去循环前缀Y_de_cp=Y(33:288);                y_FFT=(1/sqrt(N))*fft(Y_de_cp);        %% 类似于Alamouti 解码的线性解码算法解调符号     y_FFT_odd= y_FFT(1:2:N);y_FFT_even= y_FFT(2:2:N);H_1_odd=H_1(1:2:N);   %第一个发射天线信道的坐标为奇数H_1_even=H_1(2:2:N);  %第一个发射天线信道的坐标为偶数H_2_odd=H_2(1:2:N);   %第二个发射天线信道的坐标为奇数H_2_even=H_2(2:2:N);  %第二个发射天线信道的坐标为偶数h_1 = abs(H_1_odd).^2 + abs(H_2_even).^2;            H2 = abs(H_1_even).^2 + abs( H_2_odd).^2; x_est1 = (conj(H_1_odd).*y_FFT_odd +  H_2_even.*conj(y_FFT_even))./h_1;  x_est2 = (conj(H_2_odd).*y_FFT_odd - H_1_even.*conj(y_FFT_even))./H2;   xx(1:2:N) = x_est1;                                                      % 接收到的符号 xx(2:2:N) = x_est2;%% 解调x_de_QPSK_in=reshape(xx,1,N);for k=1:Nif real(x_de_QPSK_in(k))>0&&imag(x_de_QPSK_in(k))>0x_de_QPSK(:,k)=[0 0].';elseif real(x_de_QPSK_in(k))>0&&imag(x_de_QPSK_in(k))<0x_de_QPSK(:,k)=[1 0].';elseif real(x_de_QPSK_in(k))<0&&imag(x_de_QPSK_in(k))>0x_de_QPSK(:,k)=[0 1].';elseif real(x_de_QPSK_in(k))<0&&imag(x_de_QPSK_in(k))<0x_de_QPSK(:,k)=[1 1].';endenderror=length(find(x_QPSK_in(:,((ii-1)*N+1):ii*N)~=x_de_QPSK));cnt=cnt+error;endber2(n_snrr)=cnt/L/M/N;end

四、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.

【通信】基于matlab Alamouti空频编码【含Matlab源码 801期】相关推荐

  1. 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】

    一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  2. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  3. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  4. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  5. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  6. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  7. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  8. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  9. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  10. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. gdb coredump
  2. 数据库表-权限表应用
  3. yandex禁止java script_Yandex最新版本浏览器新标签页按钮显示俄文的解决办法
  4. 基本包装类和System类
  5. ASCII码与string的相互转换
  6. ISDN与PSTN的区别是什么?
  7. 反汇编基础-MSVC2012,2008,MinGw中控制台main函数入口特征
  8. 保险条款精解(四)索赔——不可不看,因为您以前可能没听说过
  9. SpringBoot配置swagger2(亲测有效,如果没有配置成功,欢迎在下方留言)
  10. Python快速构建神经网络
  11. PHP留言并展示_留言页面展示功能
  12. 经常使用的文件工具类
  13. gstreamer插件用不了,及黑名单Blacklist的解决办法
  14. 【PCIe 协议】听说你做 PCIe 很多年,还不知道 PCIe Hierarchy ID 是什么 ???
  15. Vivado 开发教程 汇总
  16. linux设备驱动模型架构分析 一
  17. 广州恒义计算机科技,【长文】SONY MAP-S1解码一体机恒义科技HY-05台式耳放听感测评...
  18. 软考高级 2022年11月信息系统项目管理师
  19. apache的基本使用
  20. IOS学习六:Date Picker, Picker View选取器控件初步

热门文章

  1. eclipse 与my eclipse区别,IDE
  2. 推荐系统-协同过滤原理与实现
  3. unity 切换场景
  4. linux apache
  5. 安卓boot.img文件详细介绍-解包,编辑,打包
  6. 重温.NET Remoting(一)
  7. 黑马程序员传智播客 python 迭代器学习笔记
  8. Grammarly SCI语法检查总结
  9. Atitit 接受post raw数据目录1. 接受get参数 11.1. //req.query只能拿到get参数 //post请求使用 body-parser拿到 12. 原生expre
  10. Atitit 单点登录实现几种模式架构图 目录 1. 因此要点也就以下两个:存储信任验证信任 1 1.1. 共享cookie (最简单 1 1.2. 通过 url带token参数跳转 1 1.3.