IFFT_modulation = zeros(symbols_per_carrier + 1, IFFT_bin_length); IFFT_modulation(:,carriers) = complex_carrier_matrix; IFFT_modulation(:,conjugate_carriers) = conj(complex_carrier_matrix);
时间: 2023-06-20 08:06:32 浏览: 106
这段代码的作用是将复数载波矩阵映射到IFFT变换的频域矩阵中。具体来说,假设有symbols_per_carrier个子载波,那么IFFT_bin_length就是整个频域矩阵的长度,包括了零频率分量和负频率分量。carriers是一个长度为symbols_per_carrier的向量,它表示需要映射到IFFT变换频域矩阵中的子载波位置。conjugate_carriers则是对应的共轭位置。
首先,将IFFT_modulation初始化为一个大小为(symbols_per_carrier + 1) x IFFT_bin_length的零矩阵。然后,将复数载波矩阵complex_carrier_matrix映射到IFFT_modulation矩阵的对应子载波位置carriers中,也就是将其赋值给IFFT_modulation矩阵的第carriers个列向量。接着,将复数载波矩阵的共轭值映射到IFFT_modulation矩阵的共轭子载波位置conjugate_carriers中,也就是将其赋值给IFFT_modulation矩阵的第conjugate_carriers个列向量的共轭值。最终,IFFT_modulation矩阵中的所有非零位置都被赋值为复数载波矩阵中对应位置的值和其共轭值的和。这个矩阵将用于进行IFFT变换,生成时域信号。
相关问题
XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP); for k=1:symbols_per_carrier; for i=1:IFFT_bin_length; XX(k,i+GI)=signal_after_IFFT(k,i); end for i=1:GI; XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);%添加循环前缀 end for j=1:GIP; XX(k,IFFT_bin_length+GI+j)=signal_after_IFFT(k,j);%添加循环后缀 end end time_wave_matrix_cp=XX
这段代码实现了将信号经过IFFT变换后,添加循环前缀和循环后缀,得到时域波形矩阵。其中,symbols_per_carrier代表载波数量,IFFT_bin_length代表每个载波的IFFT长度,GI代表循环前缀长度,GIP代表循环后缀长度。signal_after_IFFT是经过IFFT变换后的信号矩阵。代码中使用了三个循环,分别对应将IFFT变换后的信号添加循环前缀、添加循环后缀和将添加循环前缀后的信号存储在时域波形矩阵中。最终得到的时域波形矩阵为time_wave_matrix_cp。
ofdm_modulation = reshape(windowed_time_wave_matrix', 1, IFFT_bin_length*(symbols_per_carrier+1));
这段代码是将时域窗口矩阵进行转置(transpose),然后按照一定规则进行重塑(reshape)操作,最终将重塑后的矩阵转置为一个行向量。
具体来说,假设窗口矩阵为 windowed_time_wave_matrix,其中每一列代表一个 OFDM 符号的时域波形,每个符号包含 symbols_per_carrier 个子载波(carrier),每个子载波包含 IFFT_bin_length 个采样点。那么,windowed_time_wave_matrix' 将得到一个 IFFT_bin_length*(symbols_per_carrier+1) 的矩阵,其中每一行代表一个采样点,每一列代表一个子载波或者直流分量(DC component)。
然后,reshape 函数将这个矩阵重塑为一个行向量,按照列优先的顺序将每个子载波的采样点依次排列在一起。最终,ofdm_modulation 就是一个长度为 IFFT_bin_length*(symbols_per_carrier+1) 的行向量,包含了所有子载波的采样点。
阅读全文
相关推荐













