###############################################################################
#### Intermodulation products intercept points
if (CalculatePIMPS):
NumCyclesAux=NumCycles
### Apply PIMPS technique
# One source of undesired interference is passive intermodulation. A commonly used approach to measuring passive IM is to inject two fixed frequency CW tones of 20W per tone into the device under test and measure the IM power levels generated.
# https://www.castlemicrowave.com/assets/Uploads/PDF/PIM-Measurement-Techniques.pdf
# https://en.wikipedia.org/wiki/Two-tone_testing
# https://drive.google.com/file/d/1lix3TC7Jubi9Eb4IEcLgSFIiuY1ezEFW/view?usp=sharing
def PIMPSfreqCalc(iIterAux,NumCyclesAuxAux,ParticleDiameterValAux,FreqsSeparationFactorAux,BiasPointPotentialAux,freqIllAux):
if (freqIllAux>(freqIllAux*FreqsSeparationFactorAux)):
Freq2Aux=freqIllAux
Freq1Aux=freqIllAux*FreqsSeparationFactorAux
else:
Freq1Aux=freqIllAux
Freq2Aux=freqIllAux*FreqsSeparationFactorAux
freqsFFTaux = FreqTx
iIterAuxFreq1=FindNearestIndex(freqsFFTaux,Freq1Aux)
iIterAuxFreq2=FindNearestIndex(freqsFFTaux,Freq2Aux)
timeDiscretized=np.linspace(0,NumCyclesAuxAux/Freq2Aux,int(NumCyclesAuxAux*CyclesSamplingFactor),endpoint=False) # number of points a power of 2
TuckeyFilterAlpha=30.0 #If too much, distorts too much the levels of the signals
EffectiveIllutionField1=(AppliedVoltage/(2.0*MeasuringDistance))*np.cos(2*np.pi*Freq1Aux*timeDiscretized)
EffectiveIllutionField1FFT = (1.0/len(EffectiveIllutionField1))*fftpack.fft(EffectiveIllutionField1)
EffectiveIllutionField2=(AppliedVoltage/(2.0*MeasuringDistance))*np.cos(2*np.pi*Freq2Aux*timeDiscretized)
EffectiveIllutionField2FFT = (1.0/len(EffectiveIllutionField2))*fftpack.fft(EffectiveIllutionField2)
PIMPSfreqsFFTAux= fftpack.fftfreq(len(EffectiveIllutionField1)) * Freq2Aux * CyclesSamplingFactor
Eaux=EffectiveIllutionField1+EffectiveIllutionField2
EsignalVariation=((Nbacteria*(ParticleDiameterValAux**3/TotalVolume)*PermittivityMembraneCellTxAtLowGHz*Eaux+(TotalVolume/TotalVolume)*SecondOrderNonlinearCoeff*(Eaux**2)+(Nbacteria*Vshellthickness/TotalVolume)*ThirdOrderNonlinearCoeff*(BiasPointPotential/MembraneThickness)*(Eaux**2)+Nbacteria*(ParticleDiameterValAux**3/TotalVolume)*ThirdOrderNonlinearCoeff*(Eaux**3)+Nbacteria*(ParticleDiameterValAux**3/TotalVolume)*FourthOrderNonlinearCoeff*(Eaux**4))-((TotalVolume/TotalVolume)*PermettivityWaterTxAtLowGHz*Eaux))/(PermittivityMembraneCellTxAtLowGHz+2.0*PermettivityWaterTxAtLowGHz)
EsignalVariationFFT = (1.0/len(EsignalVariation))*fftpack.fft(EsignalVariation*signal.kaiser(int(len(EsignalVariation)), beta=TuckeyFilterAlpha, sym=False))
a_sField=1e0
b_sField=1e-10
c_sField=1e-18
InterferenceSystem=1.0/np.sqrt(DetectionIlluminationSignalBlocking)*(a_sField*(Eaux)+b_sField*((Eaux)**2)-c_sField*((Eaux)**3))*signal.kaiser(int(len(Eaux)), beta=TuckeyFilterAlpha, sym=False)# sym : bool, optional; When True (default), generates a symmetric window, for use in filter design. When False, generates a periodic window, for use in spectral analysis.
InterferenceSystemFFT = (1.0/len(InterferenceSystem))*fftpack.fft(InterferenceSystem)
InterferenceSystemfreqsFFTAux= fftpack.fftfreq(len(InterferenceSystem)) * Freq2Aux * CyclesSamplingFactor
return EsignalVariationFFT,InterferenceSystemFFT,PIMPSfreqsFFTAux,InterferenceSystemfreqsFFTAux
DetectionIlluminationSignalBlocking=1e0 # Capacity to block illumination signal into the detection system in power
PIMPSfreqCalcArrayFFT=np.zeros((len(FreqTx),int(NumCyclesAux*CyclesSamplingFactor)),dtype=np.complex64)
InterferenceSystemArrayFFT=np.zeros((len(FreqTx),int(NumCyclesAux*CyclesSamplingFactor)),dtype=np.complex64)
PIMPSfreqsFFTArray=np.zeros((len(FreqTx),int(NumCyclesAux*CyclesSamplingFactor)),dtype=np.float32)
InterferenceSystemfreqsFFTArray=np.zeros((len(FreqTx),int(NumCyclesAux*CyclesSamplingFactor)),dtype=np.float32)
NumAnalysis=20
IntModProductSignalArray=np.zeros((NumAnalysis),dtype=np.float32)# 1st order signal
NLPIMPsSignalArray=np.zeros((NumAnalysis),dtype=np.float32)# 2nd order signal
IntModProductInterferenceArray=np.zeros((NumAnalysis),dtype=np.float32)# 2nd order interference
FreqSeparationFactorArray=np.zeros((NumAnalysis),dtype=np.float32)
PIMPSplotFreqActivated=False
###################################################
# 1st analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0
FreqSeparationFactorArray[0]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1000:5000]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1000:5000]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[0]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[0]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[1]])
IntModProductInterferenceArray[0]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[1]])
NLratioPIMPs=IntModProductSignalArray[0]-NLPIMPsSignalArray[0]
DynamicRangePIMPs=IntModProductSignalArray[0]-IntModProductInterferenceArray[0]
NLDynamicRangePIMPs=NLPIMPsSignalArray[0]-IntModProductInterferenceArray[0]
print('1st analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
plt.figure()
markerline3, stemlines3, baseline3=plt.stem((PIMPSfreqsFFTArray[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)]*1e-9,1e3*np.abs(((0.5*Permetivity_0*InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])**2),use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem((PIMPSfreqsFFTArray[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)]*1e-9,1e3*np.abs(((0.5*Permetivity_0*PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])**2),use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Frequency [$\mathrm{GHz}$]')
plt.ylabel('Power [$\mathrm{mW}$]')
plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.title('Freq. sep. factor '+str((FreqsSeparationFactor))+'. Dynamic range: '+"{:.2f}".format(DynamicRangePIMPs)+ ' dB \n NL signal: '+"{:.2f}".format(NLratioPIMPs)+ ' dBc. NL signal range: '+"{:.2f}".format(NLDynamicRangePIMPs)+ ' dB')
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 2nd analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/64.0
FreqSeparationFactorArray[1]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1500:2500]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1500:2500]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[1]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[1]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[1]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[1]-NLPIMPsSignalArray[1]
DynamicRangePIMPs=IntModProductSignalArray[1]-IntModProductInterferenceArray[1]
NLDynamicRangePIMPs=NLPIMPsSignalArray[1]-IntModProductInterferenceArray[1]
print('2nd analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 3rd analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/32.0
FreqSeparationFactorArray[2]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1500:2500]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1500:2500]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[2]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[2]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[2]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[2]-NLPIMPsSignalArray[2]
DynamicRangePIMPs=IntModProductSignalArray[2]-IntModProductInterferenceArray[2]
NLDynamicRangePIMPs=NLPIMPsSignalArray[2]-IntModProductInterferenceArray[2]
print('3rd analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 4th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/16.0
FreqSeparationFactorArray[3]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1500:2500]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1500:2500]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[3]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[3]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[3]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[3]-NLPIMPsSignalArray[3]
DynamicRangePIMPs=IntModProductSignalArray[3]-IntModProductInterferenceArray[3]
NLDynamicRangePIMPs=NLPIMPsSignalArray[3]-IntModProductInterferenceArray[3]
print('4th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 5th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/8.0
FreqSeparationFactorArray[4]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1500:2500]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1500:2500]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[4]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[4]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[4]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[4]-NLPIMPsSignalArray[4]
DynamicRangePIMPs=IntModProductSignalArray[4]-IntModProductInterferenceArray[4]
NLDynamicRangePIMPs=NLPIMPsSignalArray[4]-IntModProductInterferenceArray[4]
print('5th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 6th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/6.0
FreqSeparationFactorArray[5]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1000:2500]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1000:2500]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[5]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[5]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[5]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[5]-NLPIMPsSignalArray[5]
DynamicRangePIMPs=IntModProductSignalArray[5]-IntModProductInterferenceArray[5]
NLDynamicRangePIMPs=NLPIMPsSignalArray[5]-IntModProductInterferenceArray[5]
print('6th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 7th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/4.0
FreqSeparationFactorArray[6]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1000:3000]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1000:3000]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[6]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[6]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[6]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[6]-NLPIMPsSignalArray[6]
DynamicRangePIMPs=IntModProductSignalArray[6]-IntModProductInterferenceArray[6]
NLDynamicRangePIMPs=NLPIMPsSignalArray[6]-IntModProductInterferenceArray[6]
print('7th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 8th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/3.0
FreqSeparationFactorArray[7]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[500:3500]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[500:3500]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[7]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[7]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[7]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[7]-NLPIMPsSignalArray[7]
DynamicRangePIMPs=IntModProductSignalArray[7]-IntModProductInterferenceArray[7]
NLDynamicRangePIMPs=NLPIMPsSignalArray[7]-IntModProductInterferenceArray[7]
print('8th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 9th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/2.0
FreqSeparationFactorArray[8]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[250:3000]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[250:3000]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[8]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[8]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[8]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[8]-NLPIMPsSignalArray[8]
DynamicRangePIMPs=IntModProductSignalArray[8]-IntModProductInterferenceArray[8]
NLDynamicRangePIMPs=NLPIMPsSignalArray[8]-IntModProductInterferenceArray[8]
print('9th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 10th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0+1.0/1.5
FreqSeparationFactorArray[9]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[250:3000]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[250:3000]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[9]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[9]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[9]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[9]-NLPIMPsSignalArray[9]
DynamicRangePIMPs=IntModProductSignalArray[9]-IntModProductInterferenceArray[9]
NLDynamicRangePIMPs=NLPIMPsSignalArray[9]-IntModProductInterferenceArray[9]
print('10th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################
# 11th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/128.0
FreqSeparationFactorArray[10]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1850:2250]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1850:2250]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[10]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[10]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[10]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[10]-NLPIMPsSignalArray[10]
DynamicRangePIMPs=IntModProductSignalArray[10]-IntModProductInterferenceArray[10]
NLDynamicRangePIMPs=NLPIMPsSignalArray[10]-IntModProductInterferenceArray[10]
print('11th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 12th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/64.0
FreqSeparationFactorArray[11]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1850:2250]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1850:2250]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[11]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[11]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[11]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[11]-NLPIMPsSignalArray[11]
DynamicRangePIMPs=IntModProductSignalArray[11]-IntModProductInterferenceArray[11]
NLDynamicRangePIMPs=NLPIMPsSignalArray[11]-IntModProductInterferenceArray[11]
print('12th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 13th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/32.0
FreqSeparationFactorArray[12]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1750:2250]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1750:2250]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[12]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[12]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[12]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[12]-NLPIMPsSignalArray[12]
DynamicRangePIMPs=IntModProductSignalArray[12]-IntModProductInterferenceArray[12]
NLDynamicRangePIMPs=NLPIMPsSignalArray[12]-IntModProductInterferenceArray[12]
print('13th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 14th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/16.0
FreqSeparationFactorArray[13]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1750:2250]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1750:2250]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[13]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[13]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[13]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[13]-NLPIMPsSignalArray[13]
DynamicRangePIMPs=IntModProductSignalArray[13]-IntModProductInterferenceArray[13]
NLDynamicRangePIMPs=NLPIMPsSignalArray[13]-IntModProductInterferenceArray[13]
print('14th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 15th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/8.0
FreqSeparationFactorArray[14]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1250:2750]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1250:2750]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[14]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[14]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[14]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[14]-NLPIMPsSignalArray[14]
DynamicRangePIMPs=IntModProductSignalArray[14]-IntModProductInterferenceArray[14]
NLDynamicRangePIMPs=NLPIMPsSignalArray[14]-IntModProductInterferenceArray[14]
print('15th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 16th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/6.0
FreqSeparationFactorArray[15]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[1000:2750]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[1000:2750]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[15]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[15]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[15]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[15]-NLPIMPsSignalArray[15]
DynamicRangePIMPs=IntModProductSignalArray[15]-IntModProductInterferenceArray[15]
NLDynamicRangePIMPs=NLPIMPsSignalArray[15]-IntModProductInterferenceArray[15]
print('16th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 17th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/4.0
FreqSeparationFactorArray[16]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[750:3000]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[750:3000]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[16]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[16]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[16]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[16]-NLPIMPsSignalArray[16]
DynamicRangePIMPs=IntModProductSignalArray[16]-IntModProductInterferenceArray[16]
NLDynamicRangePIMPs=NLPIMPsSignalArray[16]-IntModProductInterferenceArray[16]
print('17th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 18th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/3.0
FreqSeparationFactorArray[17]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[500:3000]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[500:3000]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[17]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[17]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[17]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[17]-NLPIMPsSignalArray[17]
DynamicRangePIMPs=IntModProductSignalArray[17]-IntModProductInterferenceArray[17]
NLDynamicRangePIMPs=NLPIMPsSignalArray[17]-IntModProductInterferenceArray[17]
print('18th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 19th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/2.0
FreqSeparationFactorArray[18]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[0:3500]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[0:3500]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[18]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[18]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[18]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[18]-NLPIMPsSignalArray[18]
DynamicRangePIMPs=IntModProductSignalArray[18]-IntModProductInterferenceArray[18]
NLDynamicRangePIMPs=NLPIMPsSignalArray[18]-IntModProductInterferenceArray[18]
print('19th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
###################################################3
# 20th analysis
for iIter in range(0,len(FreqTx),1):
ParticleDiameterVal=1e-6
FreqsSeparationFactor=1.0-1.0/1.5
FreqSeparationFactorArray[19]=FreqsSeparationFactor
BiasPointPotential=100e-3 # [V]
[PIMPSfreqCalcArrayFFT[iIter],InterferenceSystemArrayFFT[iIter],PIMPSfreqsFFTArray[iIter],InterferenceSystemfreqsFFTArray[iIter]]=PIMPSfreqCalc(iIter,NumCyclesAux,ParticleDiameterVal,FreqsSeparationFactor,BiasPointPotential,FreqTx[iIter])
WaveImpedancedet_0Aux=np.zeros((len(PIMPSfreqsFFTArray[0])),dtype=np.complex64)
for iIter in range(0,len(WaveImpedancedet_0Aux),1):
iIterAux=FindNearestIndex(FreqTx,PIMPSfreqsFFTArray[int(len(PIMPSfreqsFFTArray)/2)][iIter])
WaveImpedancedet_0Aux[iIter]=WaveImpedanceMedium[iIterAux]
Freq1Plot=1e9
iIterFreq1Plot=FindNearestIndex(FreqTx,Freq1Plot)
PeakDistance=11
PartSignalAnalyzePeaks=np.abs((PIMPSfreqCalcArrayFFT[iIterFreq1Plot])[0:int(len((PIMPSfreqsFFTArray[iIterFreq1Plot]))/2.0)])[0:3500]
peaksIndexSignal=(np.asarray(LibsDetectPeaks.detect_peaks(np.copy(PartSignalAnalyzePeaks),mpd=int(PeakDistance),edge='both',kpsh=False))).astype(np.int)
peaksMarkerSignal=np.zeros_like(peaksIndexSignal)
peaksMarkerSignal=PartSignalAnalyzePeaks[peaksIndexSignal]
PartSignalAnalyzePeaks=np.abs((InterferenceSystemArrayFFT[iIterFreq1Plot])[0:int(len((InterferenceSystemArrayFFT[iIterFreq1Plot]))/2.0)])[0:3500]
peaksIndexInterference=peaksIndexSignal
peaksMarkerInterference=np.zeros_like(peaksIndexInterference)
peaksMarkerInterference=PartSignalAnalyzePeaks[peaksIndexInterference]
IntModProductSignalArray[19]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[0]])
NLPIMPsSignalArray[19]=20.0*np.log10(peaksMarkerSignal[(np.argsort(peaksMarkerSignal)[::-1])[2]])
IntModProductInterferenceArray[19]=20.0*np.log10(peaksMarkerInterference[(np.argsort(peaksMarkerSignal)[::-1])[2]])
NLratioPIMPs=IntModProductSignalArray[19]-NLPIMPsSignalArray[19]
DynamicRangePIMPs=IntModProductSignalArray[19]-IntModProductInterferenceArray[19]
NLDynamicRangePIMPs=NLPIMPsSignalArray[19]-IntModProductInterferenceArray[19]
print('20th analysis')
print('NLratioPIMPs: '+str(NLratioPIMPs)+' dBc')
print('DynamicRangePIMPs: '+str(DynamicRangePIMPs)+' dB')
print('NLDynamicRangePIMPs: '+str(NLDynamicRangePIMPs)+' dB')
if (PIMPSplotFreqActivated):
plt.figure()
markerline3, stemlines3, baseline3=plt.stem(peaksIndexInterference,peaksMarkerInterference,use_line_collection=True)
markerline1, stemlines1, baseline1=plt.stem(peaksIndexSignal,peaksMarkerSignal,use_line_collection=True)
plt.setp(stemlines1, color='forestgreen',linewidth = 1.25)
plt.setp(markerline1, color='forestgreen',marker='o',markersize = 5)
plt.setp(baseline1, color = 'white',linestyle='-')
plt.setp(stemlines3, color='royalblue',linewidth = 1.25)
plt.setp(markerline3, color='royalblue',marker='+',markersize = 9)
plt.setp(baseline3, color = 'white',linestyle='-')
plt.xlabel('Point')
plt.ylabel('Power [$\mathrm{mW}$]')
#plt.xlim([Freq1Plot*1e-9-0.5*FreqsSeparationFactor,Freq1Plot*1e-9+2.5*FreqsSeparationFactor])
plt.yscale('log')
plt.legend((markerline1,markerline3), (str((Freq1Plot*1e-9))+' $\mathrm{GHz}$','Int. '+str((Freq1Plot*1e-9))+' $\mathrm{GHz}$'),loc='best',shadow = False, fancybox = False, frameon = False)# 'best'
plt.savefig( 'FigTheoreticalPIMPSsep1comma25.png', format = 'png', dpi = 600 )
plt.show()
##############################################################################
# PIMPS study
NLratioPIMPsArray=np.zeros((NumAnalysis),dtype=np.float32)
DynamicRangePIMPsArray=np.zeros((NumAnalysis),dtype=np.float32)
NLDynamicRangePIMPsArray=np.zeros((NumAnalysis),dtype=np.float32)
IndexReOrder=np.argsort(FreqSeparationFactorArray)
NLratioPIMPsArray=(IntModProductSignalArray-NLPIMPsSignalArray)[IndexReOrder]
DynamicRangePIMPsArray=(IntModProductSignalArray-IntModProductInterferenceArray)[IndexReOrder]
NLDynamicRangePIMPsArray=(NLPIMPsSignalArray-IntModProductInterferenceArray)[IndexReOrder]
plt.figure()
ax = plt.gca()
line1,=plt.plot(FreqSeparationFactorArray[IndexReOrder],DynamicRangePIMPsArray,'forestgreen',linestyle='dashed',marker='+')
line2,=plt.plot(FreqSeparationFactorArray[IndexReOrder],NLDynamicRangePIMPsArray,'firebrick',linestyle='dashed',marker='x')
line3,=plt.plot(FreqSeparationFactorArray[IndexReOrder],NLratioPIMPsArray,'royalblue',linestyle='dashed',marker='o')
plt.xlabel('Freq. Sep. ratio [adi]',fontsize=10)
plt.ylabel('Signal [$\mathrm{dB}$]',fontsize=10)
#plt.xscale('log')
#plt.yscale('log')
plt.setp(ax.get_xticklabels(),fontsize = 10)
plt.setp(ax.get_yticklabels(),fontsize = 10)
#plt.xlim([0.0,100.0])
#plt.ylim([1e-20,1e0])
plt.legend((line1,line2,line3,), ('DR','NL DR','NL ratio'), loc="best", shadow = False, fancybox = False, frameon = False,fontsize=10)# 'best'
plt.show()
plt.figure()
ax = plt.gca()
#line1,=plt.plot(FreqSeparationFactorArray[IndexReOrder],DynamicRangePIMPsArray,'forestgreen',linestyle='dashed',marker='+')
#line2,=plt.plot(FreqSeparationFactorArray[IndexReOrder],NLDynamicRangePIMPsArray,'firebrick',linestyle='dashed',marker='x')
NLratioPIMPsArray[0]=NLratioPIMPsArray[-1]
line1,=plt.plot(FreqSeparationFactorArray[IndexReOrder],NLratioPIMPsArray-NLratioPIMPsArray[-1],'royalblue',linestyle='dashed',marker='o')
plt.xlabel('Freq. Sep. ratio [adi.]',fontsize=10)
plt.ylabel('Signal [$\mathrm{dB}$]',fontsize=10)
#plt.xscale('log')
#plt.yscale('log')
plt.setp(ax.get_xticklabels(),fontsize = 10)
plt.setp(ax.get_yticklabels(),fontsize = 10)
#plt.xlim([0.0,100.0])
#plt.ylim([1e-20,1e0])
#plt.legend((line1,line2,line3,), ('DR','NL DR','NL ratio'), loc="best", shadow = False, fancybox = False, frameon = False,fontsize=10)# 'best'
plt.show()