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
时间: 2024-04-07 14:31:46 浏览: 12
这是一个用于生成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。
相关问题
function [taps,delay_taps,Doppler_taps,chan_coef] = OTFS_channel_gen(N,M) %% Channel for testing%%%%% %channel with 4 taps of uniform power%%% taps = 4; %抽头数设置为4 delay_taps = [0 1 2 3]; %时延抽头设置为4 Doppler_taps = [0 1 2 3]; %多普勒域抽头设置为4 pow_prof = (1/taps) * (ones(1,taps)); chan_coef = sqrt(pow_prof).*(sqrt(1/2) * (randn(1,taps)+1i*randn(1,taps)));%信道系数 %%%%%%%%%%%%%%%%%%%% end
这是一个用于生成OTFS信道的函数,用于测试OTFS系统的性能。具体来说,该函数实现了以下几个步骤:
1. 设置OTFS信道的抽头数为4,分别设置时延抽头和多普勒域抽头为0、1、2、3。
2. 设置各个抽头的功率,这里将各个抽头的功率都设置为相等值,即1/4。
3. 生成信道系数,其中randn函数用于生成高斯分布的随机数,表示信道系数的实部和虚部。
4. 返回抽头数、时延抽头、多普勒域抽头、信道系数等信息。
整个过程可以理解为:生成一个带有4个抽头的OTFS信道,其中各个抽头的时延和多普勒域分别为0、1、2、3,各个抽头的信道系数为高斯分布随机数。
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)解调函数,用于将接收信号r进行OTFS解调。具体来说,该函数实现了以下两个步骤:
1. Wigner变换:将接收信号r进行reshape操作,重构为矩阵r_mat,然后进行傅里叶变换(fft),最后除以sqrt(M)得到Y。
2. SFFT:将Y进行傅里叶逆变换(ifft),然后对变换结果进行转置(.'),再进行一次傅里叶变换(fft),最后除以sqrt(N/M)得到解调后的信号y。
整个过程可以理解为:将接收信号r转换到频域,然后将频域信号按照一定规则进行处理,最终得到OTFS解调后的信号y。
其中,N和M分别表示OTFS系统中的子载波数和符号数,r是接收信号向量。