CSI信道状态信息处理入门1(附源代码)

来源:互联网 发布:squid nginx 编辑:程序博客网 时间:2024/05/21 07:12

一、1组CSI数据的SNR

csi_trace = read_bf_file('源数据');%源数据为你用CSI Tools工具采集到的原始数据for l=1:1  %取50个数据包的数据csia=get_scaled_csi(csi_trace{l});for i=1:1  %1个发射天线for j=1:2   %2个接收天线for k=1:30    %30个子载波数据B(i,j,k)=csia(i,j,k);endendendplot(db(abs(squeeze(B).')))hold onendlegend('RX Antenna A', 'RX Antenna B', 'Location', 'SouthEast' );xlabel('Subcarrier index');ylabel('SNR [dB]')hold off;


二、时域柱状图

实际情况时域柱状图csi_trace = read_bf_file('源数据');for l=1:50  %取50个数据包的数据csia=get_scaled_csi(csi_trace{l});for k=1:30    %30个子载波数据B(1,1,k)=csia(1,1,k);endcsi_one=squeeze(B).';for ki=1:30    %30个子载波数据csi_amp(ki,l)=csi_one(ki);%第l个数据包的第k个子载波的相位值        【子载波,数据包】endendcsi_ifft=ifft(csi_amp(:,1));T_amp=abs(csi_ifft); bar(T_amp); set(gca,'XTick',[0 10 20 30]); set(gca,'xticklabel',{'0','0.5','1','1.5'});  xlabel('Delay (ms)');  ylabel('Amplitude(dB)');


三、未经过解卷绕的相位图

csi_trace = read_bf_file('源数据');for l=1:50  %取50个数据包的数据csia=get_scaled_csi(csi_trace{l});for k=1:30    %30个子载波数据B(1,1,k)=csia(1,1,k);csi_one=squeeze(B).';csi_phase=angle(csi_one);%angle求复数矩阵相位角的弧度值,取值-pi到picsi_amplitude=abs(csi_one);%angle求复数矩阵的绝对值phase(k,l)=csi_phase(k);%第l个数据包的第k个子载波的相位值        【子载波,数据包】amplitude(k,l)=csi_amplitude(k);endendplot(180*phase/pi,'.','Markersize',25);xlabel('Subcarrier index');ylabel('Phase (deg)')



四、经过解卷绕后的相位图

csi_trace = read_bf_file('源数据');for l=1:50  %取50个数据包的数据csia=get_scaled_csi(csi_trace{l});for k=1:30    %30个子载波数据B(1,1,k)=csia(1,1,k);csi_one=squeeze(B).';csi_phase=angle(csi_one);%angle求复数矩阵相位角的弧度值,取值-pi到picsi_amplitude=abs(csi_one);%angle求复数矩阵的绝对值phase(k,l)=csi_phase(k);%第l个数据包的第k个子载波的相位值        【子载波,数据包】amplitude(k,l)=csi_amplitude(k);endplot((180*unwrap(phase(:,l))/pi),'b');%plot(unwrap(phase(:,l)),'b');hold on;endxlabel('Subcarrier index');ylabel('Phase (deg)')%ylabel('Phase (rad)')