Skip to content

Commit bd2234a

Browse files
committed
Add ecal smooth feature (ecal data smooth after 1 scan)
1 parent 552fe87 commit bd2234a

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

main2.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -969,6 +969,22 @@ static void measurementPhaseChanged(VNAMeasurementPhases ph) {
969969
}
970970
}
971971

972+
// Allow smooth complex data point array (this remove noise, smooth power depend form count)
973+
static void measurementDataSmooth(complexf *data, int points, int count){
974+
int j;
975+
while(count--){
976+
complexf prev = data[0];
977+
// first point smooth
978+
data[0] = (prev + prev + data[1])/3.0f;
979+
for (j=1;j<points-1;j++){
980+
complexf old = data[j]; // save current data point for next point smooth
981+
data[j] = (prev + data[j] + data[j] + data[j+1])/4.0f;
982+
prev = old;
983+
}
984+
// last point smooth
985+
data[j] = (data[j] + data[j] + prev)/3.0f;
986+
}
987+
}
972988

973989
#define USE_FIXED_CORRECTION
974990
// callback called by VNAMeasurement when an observation is available.
@@ -1026,6 +1042,11 @@ static void measurementEmitDataPoint(int freqIndex, freqHz_t freqHz, VNAObservat
10261042
ecalState = ECAL_STATE_DONE;
10271043
vnaMeasurement.ecalIntervalPoints = MEASUREMENT_ECAL_INTERVAL;
10281044
vnaMeasurement.measurement_mode = (enum MeasurementMode) current_props._measurement_mode;
1045+
measurementDataSmooth(measuredEcal[0], vnaMeasurement.sweepPoints, 16);
1046+
#ifndef ECAL_PARTIAL
1047+
measurementDataSmooth(measuredEcal[1], vnaMeasurement.sweepPoints, 16);
1048+
measurementDataSmooth(measuredEcal[2], vnaMeasurement.sweepPoints, 16);
1049+
#endif
10291050
}
10301051
}
10311052
}
@@ -1052,6 +1073,24 @@ static void measurementEmitDataPoint(int freqIndex, freqHz_t freqHz, VNAObservat
10521073
collectMeasurementOffset = freqIndex > 0 ? freqIndex - 1 : vnaMeasurement.sweepPoints - 1;
10531074
} else if(collectMeasurementState == 1 && collectMeasurementOffset == freqIndex) {
10541075
collectMeasurementState = 0;
1076+
#if 0
1077+
// Made smooth result for calibration
1078+
int count = 4;
1079+
if(collectMeasurementType == CAL_LOAD)
1080+
measurementDataSmooth(current_props._cal_data[CAL_LOAD], vnaMeasurement.sweepPoints, count);
1081+
else if(collectMeasurementType == CAL_OPEN){
1082+
measurementDataSmooth(current_props._cal_data[CAL_OPEN], vnaMeasurement.sweepPoints, count);
1083+
measurementDataSmooth(current_props._cal_data[CAL_ISOLN_OPEN], vnaMeasurement.sweepPoints, count*8);
1084+
}
1085+
else if(collectMeasurementType == CAL_SHORT){
1086+
measurementDataSmooth(current_props._cal_data[CAL_SHORT], vnaMeasurement.sweepPoints, count);
1087+
measurementDataSmooth(current_props._cal_data[CAL_ISOLN_SHORT], vnaMeasurement.sweepPoints, count*8);
1088+
}
1089+
// else if(collectMeasurementType == CAL_THRU) { // Not need smooth thru calibration, no noise,
1090+
// measurementDataSmooth(current_props._cal_data[CAL_THRU_REFL], vnaMeasurement.sweepPoints, count);
1091+
// measurementDataSmooth(current_props._cal_data[CAL_THRU], vnaMeasurement.sweepPoints, count);
1092+
// }
1093+
#endif
10551094
collectMeasurementType = -1;
10561095
eventQueue.enqueue(collectMeasurementCB);
10571096
}

0 commit comments

Comments
 (0)