【水声通信】时间反转镜TRM水声OFDM信道均衡【含Matlab源码 3693期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
在这里插入图片描述
🔊博主简介:985研究生,Matlab领域科研开发者;
🏫个人主页:Matlab领域
🏆代码获取方式:
CSDN Matlab领域—代码获取方式

🚅座右铭:路漫漫其修远兮,吾将上下而求索。
更多Matlab信号处理仿真内容点击👇
Matlab信号处理(高阶版)
付费专栏Matlab信号处理(进阶版)
付费专栏Matlab信号处理(初级版)

⛳️关注CSDN Matlab领域,更多资源等你来!!

⛄一、时间反转镜TRM水声OFDM信道均衡简介

OFDM主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI) 。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。

OFDM是一种特殊的多载波传输方案。OFDM应用DFT和其逆变换IDFT方法解决了产生多个互相正交的子载波和从子载波中恢复原信号的问题。这就解决了多载波传输系统发送和传送的难题。应用快速傅里叶变换更使多载波传输系统的复杂度大大降低。从此OFDM技术开始走向实用。但是应用OFDM系统仍然需要大量繁杂的数字信号处理过程,而当时还缺乏数字处理功能强大的元器件,因此OFDM技术迟迟没有得到迅速发展。

⛄二、部分源代码

%时间反转镜仿真
%信道已知
clc;
clear all;
close all;
%%%%%%%% 建立单频矩形脉冲信号 %%%%%%%%
SNR=10;
r=[1000 250];
R=sqrt(r(1)2+r(2)2);
c=2.e05; %信号的传播速度
Amp=10^(SNR/20); %信号幅值增益
Time = 4.0000e-004; %脉冲宽度
Fsap = 4.e4; %采样频率
Num=256; %采样点数
t = (0:Num-1)(1/Fsap); %时间参量
tri = zeros(1,Num);
tra = t
Time;
rect = zeros(1,Num); %矩形函数
addz=zeros(1,4Num+50);
for i = 1:Num
tri(i) = tra(i)/max(tra);
if (tri(i)>=-0.5)&&(tri(i)<=0.5)
rect(i) = 1;
end
end
f0 = 1.e4; %信号频率为10KHz
signal = Amp
1/sqrt(Time)rect.exp(j2pif0t); %单频矩形脉冲
signal = [signal addz];
rnum=length(signal);
t1= (0:rnum-1)*1/Fsap;

NFFT = 2^nextpow2(length(signal)); %FFT采样点数
f = Fsap/2linspace(0,1,NFFT/2+1);
w=2
piFsap/2linspace(-1,1,NFFT);
Sw = fft(signal ,NFFT);

figure(1);
subplot(2,1,1);
plot(t1/1.e-3,real(signal));xlabel(‘时间/ms’);
ylabel(‘S(t)/V’);title(‘单频矩形脉冲基源信号’);
subplot(2,1,2);
plot(f/1.e3,abs(Sw(1:NFFT/2+1)));xlabel(‘频率/kHz’);
ylabel(‘S(w)/V’);title(‘频域’);

K=r(1); L=r(2);
M=50; N=100; %搜索范围
Num1 = 4;
times=1;
sumZ=0; sumZ0=zeros(M,N,NFFT);
sumz=0; sumz0=zeros(M,N,rnum);
suma=0;
%信道的频域形式
tic
for q=1:times %蒙特卡洛循环
noise=wgn(1,length(signal),1); %高斯白噪声
%-----------------------模拟信道-----------
A1(1)=0.6;
A1(2:4)= A1(1)./(1+2.5*rand(1,Num1-1));
A2(1)= R/c;
A2(2:4)=A2(1)A1(1)./A1(2:4); %A2代表时间延迟,和距离成正比,A1表示信号的幅度衰减,和距离的成正比
% A1=A1(1)^2./A1;
H1=zeros(1,NFFT);
for i=1:4
H1=H1+A1(i).exp(jw
A2(i));
end

Y=H1.*Sw;
y=fftshift(ifft(Y,rnum))+noise;
Yw=fft(y,NFFT);

%将信号时反重发
Z=0.8*H1.*conj(Y)+fft(noise,NFFT);    
z=ifft(Z,rnum);
sumZ=sumZ+Z/times;
sumz=sumz+z/times;  
m=0;
for k=K-M/2+1:K+M/2
    m=m+1;n=0;
    for l=L-N/2+1:L+N/2
        n=n+1;
        noise=wgn(1,length(signal),1);
        H2=zeros(1,NFFT);
        R0=sqrt(k^2+l^2);
      %  A10(1)=A1(1)*(R/R0);            %A10表示幅度衰减,和距离的成正比
     %   A10(2:4)=(R/R0)*A1(2:4);        %-10*(R0/R-1)*A1(2:4).*rand(1,Num1-1);
       A10=(R/R0)*(A1+A1.*rand(1,Num1)*((r(1)/k-1)*0.1+(r(2)/l-1)*0.1));
        A20(1)=R0/c;
        A20(2:4)=A20(1)*A10(1)./A10(2:4); 

% A20(2:4)=(A20(1)/A2(1))^1.2A2(2:4); %A20代表时间延迟,和距离成正比
% A10=A10(1)^2./A10;
for i=1:4
H2=H2+A10(i).exp(jw
A20(i));
end
Z0(m,n,:)=H2.*conj(Y)+fft(noise,NFFT);
z0(m,n,:)=ifft(Z0(m,n,:),rnum);
sumZ0(m,n,:)=sumZ0(m,n,:)+Z0(m,n,:)/times;
sumz0(m,n,:)=sumz0(m,n,:)+z0(m,n,:)/times;
end
end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

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

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值