Archived
add sampled data; add new online acq proj
the function of dmf is correct
This commit is contained in:
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
BIN
Binary file not shown.
|
-204
@@ -1,204 +0,0 @@
|
||||
%% File Header/文件说明
|
||||
%
|
||||
% Beamforming with phased array derives signal characteristics from phase
|
||||
% differences between sensors. Therefore the amplitude-phase consistence is
|
||||
% vital to phased systems.
|
||||
%
|
||||
% The script analyzes the amp-phase relations of ILA captured data, the format
|
||||
% of which is square-shaped pseudorandorm bit sequence. Each channel is
|
||||
% processed seperately with different frequency shifts and different optimum
|
||||
% sampling points. The estimation of amplitude and phase are based on
|
||||
% acculumated correlation peaks.
|
||||
%
|
||||
clc; clear;
|
||||
%% initial parameters/初始参数
|
||||
interp = 8; % interpolation factor
|
||||
channelNum = 4;
|
||||
dataLen = 8192;
|
||||
fs = 48e6;
|
||||
dataFile = [...
|
||||
"iladata_25.0G_1-1.csv",...
|
||||
"iladata_25.0G_1-2.csv",...
|
||||
"iladata_25.0G_1-3.csv",...
|
||||
"iladata_25.1G_1-1.csv",...
|
||||
"iladata_25.1G_1-2.csv",...
|
||||
"iladata_25.1G_1-3.csv",...
|
||||
"iladata_25.2G_1-1.csv",...
|
||||
"iladata_25.2G_1-2.csv",...
|
||||
"iladata_25.2G_1-3.csv",...
|
||||
"iladata_25.3G_1-1.csv",...
|
||||
"iladata_25.3G_1-2.csv",...
|
||||
"iladata_25.3G_1-3.csv",...
|
||||
"iladata_25.4G_1-1.csv",...
|
||||
"iladata_25.4G_1-2.csv",...
|
||||
"iladata_25.4G_1-3.csv",...
|
||||
"iladata_25.5G_1-1.csv",...
|
||||
"iladata_25.5G_1-2.csv",...
|
||||
"iladata_25.5G_1-3.csv",...
|
||||
"iladata_25.6G_1-1.csv",...
|
||||
"iladata_25.6G_1-2.csv",...
|
||||
"iladata_25.6G_1-3.csv",...
|
||||
"iladata_25.7G_1-1.csv",...
|
||||
"iladata_25.7G_1-2.csv",...
|
||||
"iladata_25.7G_1-3.csv",...
|
||||
"iladata_25.8G_1-1.csv",...
|
||||
"iladata_25.8G_1-2.csv",...
|
||||
"iladata_25.8G_1-3.csv",...
|
||||
"iladata_25.9G_1-1.csv",...
|
||||
"iladata_25.9G_1-2.csv",...
|
||||
"iladata_25.9G_1-3.csv",...
|
||||
"iladata_26.0G_1-1.csv",...
|
||||
"iladata_26.0G_1-2.csv",...
|
||||
"iladata_26.0G_1-3.csv",...
|
||||
"iladata_26.1G_1-1.csv",...
|
||||
"iladata_26.1G_1-2.csv",...
|
||||
"iladata_26.1G_1-3.csv",...
|
||||
"iladata_26.2G_1-1.csv",...
|
||||
"iladata_26.2G_1-2.csv",...
|
||||
"iladata_26.2G_1-3.csv",...
|
||||
"iladata_26.3G_1-1.csv",...
|
||||
"iladata_26.3G_1-2.csv",...
|
||||
"iladata_26.3G_1-3.csv",...
|
||||
"iladata_26.4G_1-1.csv",...
|
||||
"iladata_26.4G_1-2.csv",...
|
||||
"iladata_26.4G_1-3.csv",...
|
||||
"iladata_26.5G_1-1.csv",...
|
||||
"iladata_26.5G_1-2.csv",...
|
||||
"iladata_26.5G_1-3.csv",...
|
||||
"iladata_26.6G_1-1.csv",...
|
||||
"iladata_26.6G_1-2.csv",...
|
||||
"iladata_26.6G_1-3.csv",...
|
||||
"iladata_26.7G_1-1.csv",...
|
||||
"iladata_26.7G_1-2.csv",...
|
||||
"iladata_26.8G_1-1.csv",...
|
||||
"iladata_26.8G_1-2.csv",...
|
||||
"iladata_26.8G_1-3.csv",...
|
||||
"iladata_26.9G_1-1.csv",...
|
||||
"iladata_26.9G_1-2.csv",...
|
||||
"iladata_26.9G_1-3.csv",...
|
||||
"iladata_27.0G_1-1.csv",...
|
||||
"iladata_27.0G_1-2.csv",...
|
||||
"iladata_27.0G_1-3.csv",...
|
||||
];
|
||||
dataFileNum = length(dataFile);
|
||||
|
||||
% standard pn sequence
|
||||
pnSequence = comm.PNSequence('Polynomial','x^7+x^6+1', ...
|
||||
'InitialConditions',[zeros(1,6),1],'SamplesPerFrame',2^7-1);
|
||||
PRBS7 = pnSequence();
|
||||
PRBS7_polar = 1-2*[PRBS7;0];
|
||||
|
||||
chipLen = length(PRBS7_polar); % pn chip length
|
||||
symNum = dataLen/chipLen/interp; % total symbol number
|
||||
symNumPerAccum = 1; % symbol nbumber of each accumulation
|
||||
accNum = symNum/symNumPerAccum; % total accumulation numbers, i.e. peak numbers
|
||||
|
||||
ampEstSymMax = zeros(dataFileNum,channelNum);
|
||||
ampEstSymMin = zeros(dataFileNum,channelNum);
|
||||
ampEstSymAvg = zeros(dataFileNum,channelNum);
|
||||
angleEstSymMax = zeros(dataFileNum,channelNum);
|
||||
angleEstSymMin = zeros(dataFileNum,channelNum);
|
||||
angleEstSymAvg = zeros(dataFileNum,channelNum);
|
||||
|
||||
ampEstSymMaxList = strings(dataFileNum+1,channelNum+1);
|
||||
ampEstSymMinList = strings(dataFileNum+1,channelNum+1);
|
||||
ampEstSymAvgList = strings(dataFileNum+1,channelNum+1);
|
||||
angleEstSymMaxList = strings(dataFileNum+1,channelNum+1);
|
||||
angleEstSymMinList = strings(dataFileNum+1,channelNum+1);
|
||||
angleEstSymAvgList = strings(dataFileNum+1,channelNum+1);
|
||||
|
||||
ampEstSymMaxList(1,:) = ["Amp Max Value", "ch1", "ch2", "ch3", "ch4"];
|
||||
ampEstSymMinList(1,:) = ["Amp Min Value", "ch1", "ch2", "ch3", "ch4"];
|
||||
ampEstSymAvgList(1,:) = ["Amp Avg Value", "ch1", "ch2", "ch3", "ch4"];
|
||||
angleEstSymMaxList(1,:) = ["Angle Max Value", "ch1", "ch2", "ch3", "ch4"];
|
||||
angleEstSymMinList(1,:) = ["Angle Min Value", "ch1", "ch2", "ch3", "ch4"];
|
||||
angleEstSymAvgList(1,:) = ["Angle Avg Value", "ch1", "ch2", "ch3", "ch4"];
|
||||
|
||||
ampEstSymMaxList(2:end,1) = dataFile;
|
||||
ampEstSymMinList(2:end,1) = dataFile;
|
||||
ampEstSymAvgList(2:end,1) = dataFile;
|
||||
angleEstSymMaxList(2:end,1) = dataFile;
|
||||
angleEstSymMinList(2:end,1) = dataFile;
|
||||
angleEstSymAvgList(2:end,1) = dataFile;
|
||||
|
||||
for dataFileIndex = 1:dataFileNum
|
||||
disp(dataFile(dataFileIndex));
|
||||
|
||||
%% data analysis
|
||||
|
||||
% read data, and swap ch1 and ch2, because loop data locate at ch2 and ch4
|
||||
rxdata = readmatrix(dataFile(dataFileIndex));
|
||||
seqRx(:,1) = (rxdata(:, 6) + 1i*rxdata(:, 7)).';
|
||||
seqRx(:,2) = (rxdata(:, 4) + 1i*rxdata(:, 5)).';
|
||||
seqRx(:,3) = (rxdata(:, 8) + 1i*rxdata(:, 9)).';
|
||||
seqRx(:,4) = (rxdata(:,10) + 1i*rxdata(:,11)).';
|
||||
|
||||
% compensate frequecny deviation and downsample at optimum sample position based
|
||||
% on the varience of constellation
|
||||
[seqRxDown,fd,samplePos] = suqareShapeFreqEst(seqRx,interp,fs,-25000,-21000,5);
|
||||
|
||||
% split [seqRxDown] into multiple groups, each group contains several symbols to
|
||||
% be correlated with PRBS7 and accumulated
|
||||
seqRxDownSplit = reshape(seqRxDown(1:dataLen/interp,:),chipLen*symNumPerAccum, ...
|
||||
accNum,channelNum);
|
||||
|
||||
seqRxAcc = zeros(chipLen,accNum,channelNum);
|
||||
desiredPnt = zeros(accNum,channelNum);
|
||||
ampEstSym = zeros(accNum,channelNum);
|
||||
angleEstSym = zeros(accNum,channelNum);
|
||||
|
||||
for i = 1:accNum
|
||||
for j = 1:channelNum
|
||||
% correlation & multi-symbol accumulation
|
||||
groupCorrAcc = sum(...
|
||||
reshape(...
|
||||
conv(...
|
||||
flip(seqRxDownSplit(:,i,j)),...
|
||||
PRBS7_polar,'same'),...
|
||||
chipLen,symNumPerAccum),...
|
||||
2)';
|
||||
seqRxAcc(:,i,j) = groupCorrAcc;
|
||||
% peak position
|
||||
desiredPnt(i,j) = groupCorrAcc(abs(groupCorrAcc)==max(abs(groupCorrAcc)));
|
||||
end
|
||||
end
|
||||
|
||||
for i = 1:channelNum
|
||||
ampEstSym(:,i) = abs(desiredPnt(:,i))./abs(desiredPnt(:,1));
|
||||
angleEstSym(:,i) = mod((angle(desiredPnt(:,i))-angle(desiredPnt(:,1)))/pi*180,360);
|
||||
end
|
||||
|
||||
ampEstSymMax(dataFileIndex,:) = max(ampEstSym);
|
||||
ampEstSymMin(dataFileIndex,:) = min(ampEstSym);
|
||||
ampEstSymAvg(dataFileIndex,:) = mean(ampEstSym);
|
||||
angleEstSymMax(dataFileIndex,:) = max(angleEstSym);
|
||||
angleEstSymMin(dataFileIndex,:) = min(angleEstSym);
|
||||
angleEstSymAvg(dataFileIndex,:) = mean(angleEstSym);
|
||||
|
||||
ampEstSymMaxList(dataFileIndex+1,2:end) = string(ampEstSymMax(dataFileIndex,:));
|
||||
ampEstSymMinList(dataFileIndex+1,2:end) = string(ampEstSymMin(dataFileIndex,:));
|
||||
ampEstSymAvgList(dataFileIndex+1,2:end) = string(ampEstSymAvg(dataFileIndex,:));
|
||||
angleEstSymMaxList(dataFileIndex+1,2:end) = string(angleEstSymMax(dataFileIndex,:));
|
||||
angleEstSymMinList(dataFileIndex+1,2:end) = string(angleEstSymMin(dataFileIndex,:));
|
||||
angleEstSymAvgList(dataFileIndex+1,2:end) = string(angleEstSymAvg(dataFileIndex,:));
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
%% figures
|
||||
% figure(1);
|
||||
%
|
||||
% subplot(121);
|
||||
% plot(ampEstSym);
|
||||
% legend({"ch1","ch2","ch3","ch4"});
|
||||
% title("Amplitude Estimation");
|
||||
% ylim([min(ampEstSym,[],'all')-0.2,max(ampEstSym,[],'all')+0.2]);
|
||||
% grid on; grid minor;
|
||||
%
|
||||
% subplot(122);
|
||||
% plot(angleEstSym);
|
||||
% legend({"ch1","ch2","ch3","ch4"});
|
||||
% title("Angle Estimation");
|
||||
% ylim([-10,370]);
|
||||
% grid on; grid minor;
|
||||
+63
-62
@@ -17,68 +17,69 @@ channelNum = 4;
|
||||
dataLen = 8192;
|
||||
fs = 48e6;
|
||||
dataFile = [...
|
||||
"iladata_25.0G_1-1.csv",...
|
||||
"iladata_25.0G_1-2.csv",...
|
||||
"iladata_25.0G_1-3.csv",...
|
||||
"iladata_25.1G_1-1.csv",...
|
||||
"iladata_25.1G_1-2.csv",...
|
||||
"iladata_25.1G_1-3.csv",...
|
||||
"iladata_25.2G_1-1.csv",...
|
||||
"iladata_25.2G_1-2.csv",...
|
||||
"iladata_25.2G_1-3.csv",...
|
||||
"iladata_25.3G_1-1.csv",...
|
||||
"iladata_25.3G_1-2.csv",...
|
||||
"iladata_25.3G_1-3.csv",...
|
||||
"iladata_25.4G_1-1.csv",...
|
||||
"iladata_25.4G_1-2.csv",...
|
||||
"iladata_25.4G_1-3.csv",...
|
||||
"iladata_25.5G_1-1.csv",...
|
||||
"iladata_25.5G_1-2.csv",...
|
||||
"iladata_25.5G_1-3.csv",...
|
||||
"iladata_25.6G_1-1.csv",...
|
||||
"iladata_25.6G_1-2.csv",...
|
||||
"iladata_25.6G_1-3.csv",...
|
||||
"iladata_25.7G_1-1.csv",...
|
||||
"iladata_25.7G_1-2.csv",...
|
||||
"iladata_25.7G_1-3.csv",...
|
||||
"iladata_25.8G_1-1.csv",...
|
||||
"iladata_25.8G_1-2.csv",...
|
||||
"iladata_25.8G_1-3.csv",...
|
||||
"iladata_25.9G_1-1.csv",...
|
||||
"iladata_25.9G_1-2.csv",...
|
||||
"iladata_25.9G_1-3.csv",...
|
||||
"iladata_26.0G_1-1.csv",...
|
||||
"iladata_26.0G_1-2.csv",...
|
||||
"iladata_26.0G_1-3.csv",...
|
||||
"iladata_26.1G_1-1.csv",...
|
||||
"iladata_26.1G_1-2.csv",...
|
||||
"iladata_26.1G_1-3.csv",...
|
||||
"iladata_26.2G_1-1.csv",...
|
||||
"iladata_26.2G_1-2.csv",...
|
||||
"iladata_26.2G_1-3.csv",...
|
||||
"iladata_26.3G_1-1.csv",...
|
||||
"iladata_26.3G_1-2.csv",...
|
||||
"iladata_26.3G_1-3.csv",...
|
||||
"iladata_26.4G_1-1.csv",...
|
||||
"iladata_26.4G_1-2.csv",...
|
||||
"iladata_26.4G_1-3.csv",...
|
||||
"iladata_26.5G_1-1.csv",...
|
||||
"iladata_26.5G_1-2.csv",...
|
||||
"iladata_26.5G_1-3.csv",...
|
||||
"iladata_26.6G_1-1.csv",...
|
||||
"iladata_26.6G_1-2.csv",...
|
||||
"iladata_26.6G_1-3.csv",...
|
||||
"iladata_26.7G_1-1.csv",...
|
||||
"iladata_26.7G_1-2.csv",...
|
||||
"iladata_26.8G_1-1.csv",...
|
||||
"iladata_26.8G_1-2.csv",...
|
||||
"iladata_26.8G_1-3.csv",...
|
||||
"iladata_26.9G_1-1.csv",...
|
||||
"iladata_26.9G_1-2.csv",...
|
||||
"iladata_26.9G_1-3.csv",...
|
||||
"iladata_27.0G_1-1.csv",...
|
||||
"iladata_27.0G_1-2.csv",...
|
||||
"iladata_27.0G_1-3.csv",...
|
||||
"iladata_26.0G_2-1.csv",...
|
||||
% "iladata_25.0G_2-2.csv",...
|
||||
% "iladata_25.0G_2-3.csv",...
|
||||
% "iladata_25.1G_2-1.csv",...
|
||||
% "iladata_25.1G_2-2.csv",...
|
||||
% "iladata_25.1G_2-3.csv",...
|
||||
% "iladata_25.2G_2-1.csv",...
|
||||
% "iladata_25.2G_2-2.csv",...
|
||||
% "iladata_25.2G_2-3.csv",...
|
||||
% "iladata_25.3G_2-1.csv",...
|
||||
% "iladata_25.3G_2-2.csv",...
|
||||
% "iladata_25.3G_2-3.csv",...
|
||||
% "iladata_25.4G_2-1.csv",...
|
||||
% "iladata_25.4G_2-2.csv",...
|
||||
% "iladata_25.4G_2-3.csv",...
|
||||
% "iladata_25.5G_2-1.csv",...
|
||||
% "iladata_25.5G_2-2.csv",...
|
||||
% "iladata_25.5G_2-3.csv",...
|
||||
% "iladata_25.6G_2-1.csv",...
|
||||
% "iladata_25.6G_2-2.csv",...
|
||||
% "iladata_25.6G_2-3.csv",...
|
||||
% "iladata_25.7G_2-1.csv",...
|
||||
% "iladata_25.7G_2-2.csv",...
|
||||
% "iladata_25.7G_2-3.csv",...
|
||||
% "iladata_25.8G_2-1.csv",...
|
||||
% "iladata_25.8G_2-2.csv",...
|
||||
% "iladata_25.8G_2-3.csv",...
|
||||
% "iladata_25.9G_2-1.csv",...
|
||||
% "iladata_25.9G_2-2.csv",...
|
||||
% "iladata_25.9G_2-3.csv",...
|
||||
% "iladata_26.0G_2-1.csv",...
|
||||
% "iladata_26.0G_2-2.csv",...
|
||||
% "iladata_26.0G_2-3.csv",...
|
||||
% "iladata_26.1G_2-1.csv",...
|
||||
% "iladata_26.1G_2-2.csv",...
|
||||
% "iladata_26.1G_2-3.csv",...
|
||||
% "iladata_26.2G_2-1.csv",...
|
||||
% "iladata_26.2G_2-2.csv",...
|
||||
% "iladata_26.2G_2-3.csv",...
|
||||
% "iladata_26.3G_2-1.csv",...
|
||||
% "iladata_26.3G_2-2.csv",...
|
||||
% "iladata_26.3G_2-3.csv",...
|
||||
% "iladata_26.4G_2-1.csv",...
|
||||
% "iladata_26.4G_2-2.csv",...
|
||||
% "iladata_26.4G_2-3.csv",...
|
||||
% "iladata_26.5G_2-1.csv",...
|
||||
% "iladata_26.5G_2-2.csv",...
|
||||
% "iladata_26.5G_2-3.csv",...
|
||||
% "iladata_26.6G_2-1.csv",...
|
||||
% "iladata_26.6G_2-2.csv",...
|
||||
% "iladata_26.6G_2-3.csv",...
|
||||
% "iladata_26.7G_2-1.csv",...
|
||||
% "iladata_26.7G_2-2.csv",...
|
||||
% "iladata_26.7G_2-3.csv",... % none for 1-3
|
||||
% "iladata_26.8G_2-1.csv",...
|
||||
% "iladata_26.8G_2-2.csv",...
|
||||
% "iladata_26.8G_2-3.csv",...
|
||||
% "iladata_26.9G_2-1.csv",...
|
||||
% "iladata_26.9G_2-2.csv",...
|
||||
% "iladata_26.9G_2-3.csv",...
|
||||
% "iladata_27.0G_2-1.csv",...
|
||||
% "iladata_27.0G_2-2.csv",...
|
||||
% "iladata_27.0G_2-3.csv",...
|
||||
];
|
||||
dataFileNum = length(dataFile);
|
||||
|
||||
|
||||
projects/dl814_k7/dl814_k7_cal_coarse/data/20230424-单音信号调零结果/iladata_rx_singletone_25.5G_withFIR.csv
LFS
BIN
Binary file not shown.
|
projects/dl814_k7/dl814_k7_cal_coarse/data/20230424-单音信号调零结果/iladata_rx_singletone_26.0G_withFIR.csv
LFS
BIN
Binary file not shown.
|
projects/dl814_k7/dl814_k7_cal_coarse/data/20230424-单音信号调零结果/iladata_rx_singletone_26.5G_withFIR.csv
LFS
BIN
Binary file not shown.
|
@@ -0,0 +1,14 @@
|
||||
dataFileName = "iladata_rx_singletone_25.5G_withFIR.csv";
|
||||
rxdata = readmatrix(dataFileName);
|
||||
|
||||
seqRx(:,1) = (rxdata(:, 4) + 1i*rxdata(:, 5)).';
|
||||
seqRx(:,2) = (rxdata(:, 6) + 1i*rxdata(:, 7)).';
|
||||
seqRx(:,3) = (rxdata(:, 8) + 1i*rxdata(:, 9)).';
|
||||
seqRx(:,4) = (rxdata(:,10) + 1i*rxdata(:,11)).';
|
||||
seqRx(:,5) = (rxdata(:,12) + 1i*rxdata(:,13)).';
|
||||
|
||||
figure(1);
|
||||
pwelch(seqRx(:,1),[],[],[],48e6);
|
||||
|
||||
figure(2);
|
||||
pwelch(seqRx(:,5),[],[],[],48e6);
|
||||
Reference in New Issue
Block a user