function s = OTFS_modulation(N,M,x) %% OTFS Modulation: 1. ISFFT, 2. Heisenberg transform X = fft(ifft(x).').'/sqrt(M/N); %%%ISFFT,其中.'表示转置, s_mat = ifft(X.')*sqrt(M); % Heisenberg transform s = s_mat(:);%(:)表示将矩阵重构为列向量: end
时间: 2024-04-07 19:32:02 浏览: 149
这是一个OTFS(Orthogonal Time Frequency Space)调制函数,用于将输入信号x进行OTFS调制。具体来说,该函数实现了以下两个步骤:
1. ISFFT:将输入信号x进行傅里叶逆变换(ifft),然后对变换结果进行转置(.'),再进行一次傅里叶变换(fft),最后除以sqrt(M/N)得到X。
2. Heisenberg变换:将X进行转置和ifft操作,得到矩阵s_mat,再将矩阵s_mat重构为列向量s。
整个过程可以理解为:将时域信号x转换到频域,然后将频域信号按照一定规则进行处理,最终得到OTFS调制后的信号s。
其中,N和M分别表示OTFS系统中的子载波数和符号数,x是输入信号向量。
相关问题
function y = OTFS_demodulation(N,M,r) %% OTFS demodulation: 1. Wiegner transform, 2. SFFT r_mat = reshape(r,M,N); Y = fft(r_mat)/sqrt(M); % Wigner transform Y = Y.'; y = ifft(fft(Y).').'/sqrt(N/M); % SFFT end
这段代码是用于实现OTFS(orthogonal time frequency space)调制的解调。其中,OTFS是一种新型的多输入多输出(MIMO)调制技术,可以提高在时变信道下的传输效率和质量。这段代码实现的OTFS解调分为两个步骤:
1. Wigner变换:将接收到的信号r按照M行N列的方式排列,然后对每一列进行FFT,最后除以sqrt(M)得到Y矩阵,即Wigner变换后的矩阵。
2. SFFT(Symmetric Fast Fourier Transform):对Y矩阵进行对称FFT操作,然后进行IFFT操作,并除以sqrt(N/M)得到解调后的信号y。
这段代码中的变量含义为:
N:每个OFDM符号中的子载波数
M:每个OFDM符号中的符号数
r:接收到的信号
function r = OTFS_channel_output(N,M,taps,delay_taps,Doppler_taps,chan_coef,sigma_2,s) %% wireless channel and noise L = max(delay_taps);%最大的时延 s = [s(N*M-L+1:N*M);s];%add one cp %加入循环前缀编码(将OTFS符号数组的后四位信号复制到头部构成的一组(64+4)*1的数组) s_chan = 0; %信道输入信号初始化 for itao = 1:taps s_chan = s_chan+chan_coef(itao)*circshift([s.*exp(1j*2*pi/M *(-L:-L+length(s)-1)*Doppler_taps(itao)/N).';zeros(delay_taps(end),1)],delay_taps(itao)); %%s_chan是71*1维数组 end noise = sqrt(sigma_2/2)*(randn(size(s_chan)) + 1i*randn(size(s_chan)));%信道噪声 r = s_chan + noise; r = r(L+1:L+(N*M));%discard cp(去掉循环前缀,也就是输出68*1维数组的后64位) end
这是一个用于生成OTFS信道输出的函数,用于模拟OTFS系统中的无线信道和噪声。具体来说,该函数实现了以下几个步骤:
1. 计算OTFS符号的最大时延,并将其记为L。
2. 将OTFS符号数组s的后L位信号复制到头部构成一组(N*M+L)*1的数组,这里的复制操作就是添加循环前缀,用于解决符号间干扰问题。
3. 初始化信道输入信号s_chan为0,然后对于每个抽头,将符号s乘以相应的复杂旋转因子exp(1j*2*pi/M *(-L:-L+length(s)-1)*Doppler_taps(itao)/N),延迟delay_taps(itao)个单位时间,并根据chan_coef(itao)权重进行加权和,得到当前抽头的信号输出,最后将所有抽头的信号输出求和得到信道输入信号s_chan。
4. 生成信道噪声noise,其中randn函数用于生成高斯分布的随机数,表示噪声的实部和虚部。
5. 将信道输入信号s_chan和噪声noise加起来得到OTFS信道输出r。
6. 去掉循环前缀,得到最终的OTFS信号输出r。
整个过程可以理解为:将OTFS符号数组s通过信道进行传输,其中每个抽头对应一个不同的多普勒频移和时延,加入高斯噪声后,得到OTFS信道输出r。
阅读全文