function [staFeedback,PDP,rmsDelay,DopplerShift,rssi_dbm,SNR] = RX_NDPCal(rx,cfgHE,ind,pktOffset,gain) addpath(genpath('.\sounding')); % ****手动调整NDP的尺寸 % rxNDP = txNDP(:,1:2); % 计算引导矩阵 numTx = cfgHE.numTx; cfgNDP = wlanHESUConfig('APEPLength',0,'GuardInterval',0.8); % No data in an NDP cfgNDP.NumTransmitAntennas = numTx;%?? cfgNDP.NumSpaceTimeStreams = numTx;%?? txNDP = wlanWaveformGenerator([],cfgNDP); len_NDP = length(txNDP); % 加入PN序列,正交序列,重复三次左右 K = 255; soundingSeqMod_1 = zadoffChuSeq(29,K); soundingSeqMod_2 = zadoffChuSeq(47,K); % Concatenate multiple sequences to sound the channel periodically. numSeq = 10; % Number of transmitted sequences in a WSS period soundingSeqMod = [soundingSeqMod_1, soundingSeqMod_2]; txSignal = repmat(soundingSeqMod,numSeq,1); len_sd = length(txSignal); % for userIdx = 1:numUsers % NDP被接收端利用计算反馈信息 % Get the full-band beamforming feedback for a user staFeedback = heUserBeamformingFeedback(rx,cfgNDP); sounding_seq = rx(len_NDP+1:len_NDP+len_sd); [PDP,rmsDelay,DopplerShift] = rxChannelSounding(sounding_seq,cfgHE,numSeq,K); % end % RSSI rxLSTF = rx(pktOffset+(ind.LSTF(1):ind.LSTF(2)),:)./(gain); rssi_legancy = mean(abs(rxLSTF).^2); rssi_legancy_dbm = 10*log10(rssi_legancy/1e-3); rxHETF = rx(pktOffset+(ind.HESTF(1):ind.HELTF(2)),:)./(gain); rssi = mean(abs(rxHETF).^2); rssi_dbm = 10*log10(rssi/1e-3); fprintf(' rssi_legancy: %f dBm\n rssi: %f dBm\n', rssi_legancy_dbm, rssi_dbm); % SNR估计 LLTF = rx(ind.LLTF(1):ind.LLTF(2)); LLTF_length = length(LLTF); LLTF1 = LLTF(1+LLTF_length/5:LLTF_length*3/5); LLTF2 = LLTF(1+LLTF_length*3/5:end); N = 64; LLTF1_fft = ((abs(fftshift(fft(LLTF1)))).^2)/N; LLTF2_fft = ((abs(fftshift(fft(LLTF2)))).^2)/N; for i = 0:LLTF_length/160-1 power_signal = sum(LLTF1_fft(i*N+(7:32))) + sum(LLTF1_fft(i*N+(34:59))) + ... sum(LLTF2_fft(i*N+(7:32))) + sum(LLTF2_fft(i*N+(34:59))); power_noise = sum(LLTF1_fft(i*N+(1:6))) + sum(LLTF1_fft(i*N+(33))) + sum(LLTF1_fft(i*N+(end-4:end))) + ... sum(LLTF2_fft(i*N+(1:6))) + sum(LLTF2_fft(i*N+(33))) + sum(LLTF2_fft(i*N+(end-4:end))); end SNR = 10*log10(power_signal/(power_noise*64/12)); fprintf(' SNR: %f dB\n', SNR); rmpath(genpath('.\sounding')); end