<p>Nsym=1024; %符号数
Nc=256; %number of subcarriers
G=1/8; %choice of 1/4, 1/8, 1/16, and 1/32
cp_len=G*Nc;
T=11e-6; %useful OFDM symbol period
Tg=G*T; %guard band duration(1.375us)
T_ofdm=T+Tg; %total OFDM symbol period(12.375us)
T_total=T_ofdm*Nsym; %baseband elementary period(4.2969e-08)
f0=24e9;%%%射频 %carrier frequency
deltaF=90.909e3; %载波间隔
B=deltaF*Nc; %带宽93.1MHz
ifft_fft_long=256; %%%ifft和fft点数,与子载波数相同</p><p>%------------------------------------读取数据-----------------------------------------------------------------
file_name='text2.txt';
%text file input
file = fopen(file_name,'rt');
data_samples = fread(file,'char');
fclose(file);
data_samples=data_samples(1:65536);
data_in = zeros(1,8*length(data_samples));
for i = 1:length(data_samples)
data_in(1 + (i-1)*8:(i-1)*8 + 8) = eight2bin(data_samples(i));
end
data_for_QPSK = zeros(1,length(data_in)/2);
for i=1:2:length(data_in)/2
if data_in(i)==0 && data_in(i+1)==0
data_for_QPSK(i)=0;
elseif data_in(i)==0 && data_in(i+1)==1
data_for_QPSK(i)=1;
elseif data_in(i)==1 && data_in(i+1)==0
data_for_QPSK(i)=2;
else
data_for_QPSK(i)=3;
end
end
qpsk_modulated_data = pskmod(data_for_QPSK, 4);
data_length=length(data_for_QPSK);
%示例文件text2.txt的大小刚好是按照256个符号,1024个载波,QPSK调制在1个脉冲里完成传输。
data_matrix = reshape(qpsk_modulated_data, Nsym, Nc);
cp_start = Nc-cp_len;
cp_end = Nc;%Third: Operate columnwise & do CP
% 若行代表Nsym,则对行进行IFFT,若列代表Nsym,则对列进行IFFT
for i=1:Nsym,
ifft_data_matrix(i,:) = ifft((data_matrix(i,:)),ifft_fft_long).*ifft_fft_long;
% Compute and append Cyclic Prefix
for j=1:cp_len,
actual_cp(i,j) = ifft_data_matrix(i,j+cp_start);
end
% Append the CP to the existing block to create the actual OFDM block
ifft_data(i,:) = horzcat(actual_cp(i,:),ifft_data_matrix(i,:));
end
[rows_ifft_data,cols_ifft_data]=size(ifft_data);
len_ofdm_data = rows_ifft_data*cols_ifft_data;
% ifft_data=ifft_data.';
ofdm_signal = reshape(ifft_data, 1, len_ofdm_data);</p>