0001
0002
0003 function [dataOut]=generatePowerSpectraBothRoachesTempScaled(d,varargin)
0004
0005
0006
0007 try
0008 graphics=varargin(1)
0009 catch
0010 graphics =0
0011 end
0012
0013 try
0014 filename=varargin(2)
0015 saveFile=1;
0016 catch
0017 filename=[];
0018 saveFile=0;
0019 end
0020
0021 display('Starting Roach 1')
0022
0023 timeroach=(d.antenna0.roach1.utc-d.antenna0.roach1.utc(1)).*24;
0024 timetemps=d.antenna0.thermal.utc-d.antenna0.thermal.utc(1);
0025 timelsTemps= timetemps([1:5:length(timetemps)]).*24;
0026 timeCryoTemps=timetemps.*24;
0027 lengthvec = length(d.antenna0.roach1.RR)
0028 timeroachshort=timeroach(1:lengthvec-0);
0029
0030
0031 ll=mean(d.antenna0.roach1.LL((1:lengthvec-0),4:60),2);
0032 loadl =mean(d.antenna0.roach1.load2((1:lengthvec-0),4:60),2);
0033 rr=mean(d.antenna0.roach1.RR((1:lengthvec-0),4:60),2);
0034 loadr =mean(d.antenna0.roach1.load1((1:lengthvec-0),4:60),2);
0035 Q=mean(d.antenna0.roach1.Q((1:lengthvec-0),4:60),2);
0036 U=mean(d.antenna0.roach1.U((1:lengthvec-0),4:60),2);
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055 llmean=ll-mean(ll);
0056 rrmean=rr-mean(rr);
0057 qmean=Q-mean(Q);
0058 umean=U-mean(U);
0059
0060
0061 templs=d.antenna0.thermal.lsTemperatureSensors(:,2);
0062 tempsmean = templs-mean(templs);
0063 tempsCryo=d.antenna0.thermal.ccTemperatureLoad;
0064
0065
0066 rfactorR=mean(rr)./mean(loadr)
0067 rfactorL=mean(ll)./mean(loadl)
0068 rfactorR1=rfactorR;
0069 rfactorL1=rfactorL;
0070
0071
0072
0073 skyminusloadleft = mean(tempsCryo).*ll./loadl;
0074 skyminusloadright = mean(tempsCryo).*rr./loadr;
0075
0076
0077
0078
0079 skyminusloadleftmean = skyminusloadleft-mean(skyminusloadleft);
0080 skyminusloadrightmean = skyminusloadright-mean(skyminusloadright);
0081
0082
0083
0084
0085 amplifierfnoise = skyminusloadleft-skyminusloadright;
0086 amplifierfnoisemean = amplifierfnoise-mean(amplifierfnoise);
0087
0088
0089
0090
0091
0092
0093
0094 Fs=100;
0095 FsTemps = 1;
0096 T = 1/Fs;
0097 L = length(ll);
0098 t = (0:L-1)*T;
0099 TTemps = 1/FsTemps;
0100 LTemps = length(templs);
0101 tTemps = (0:LTemps-1)*TTemps;
0102 NFFT = 2^nextpow2(L);
0103 NFFTtemps = 2^(nextpow2(LTemps))
0104 f = Fs/2*linspace(0,1,NFFT/2+1);
0105 ftemps = FsTemps/2*linspace(0,1,NFFTtemps/2+1);
0106
0107 YRR = fft(rrmean,NFFT)/L;
0108 YLL = fft(llmean,NFFT)/L;
0109 YQ = fft(qmean,NFFT)/L;
0110 YU = fft(umean,NFFT)/L;
0111 YRRBalanced = fft(skyminusloadrightmean,NFFT)/L;
0112 YLLBalanced = fft(skyminusloadleftmean,NFFT)/L;
0113 Ytemps = fft(tempsmean,NFFTtemps)/LTemps;
0114
0115 Yamplifier = fft(skyminusloadrightmean-skyminusloadleftmean,NFFT)/L;
0116 YI = fft((skyminusloadrightmean+skyminusloadleftmean)./2,NFFT)/L;
0117 YIUnstabilized = fft((rrmean+llmean)./2,NFFT)/L;
0118
0119 YRRb = 2*abs(YRR(1:NFFT/2+1));
0120 YLLb = 2*abs(YLL(1:NFFT/2+1));
0121 YQb = 2*abs(YQ(1:NFFT/2+1));
0122 YUb = 2*abs(YU(1:NFFT/2+1));
0123 YRRBalancedb = 2*abs(YRRBalanced(1:NFFT/2+1));
0124 YLLBalancedb = 2*abs(YLLBalanced(1:NFFT/2+1));
0125 Ytempsb = 2*abs(Ytemps(1:NFFTtemps/2+1));
0126
0127 Yamplifierb = 2*abs(Yamplifier(1:NFFT/2+1));
0128
0129 bin_size=100;
0130 YRRbin=bin(YRRb,bin_size);
0131 YLLbin=bin(YLLb,bin_size);
0132 YQbin=bin(YQb,bin_size);
0133 YUbin=bin(YUb,bin_size);
0134 YRRBalancedbin=bin(YRRBalancedb,bin_size);
0135 YLLBalancedbin=bin(YLLBalancedb,bin_size);
0136 Ytempsbin=bin(Ytempsb,bin_size);
0137 Yamplifierbin=bin(Yamplifierb,bin_size);
0138 fbin = bin(f,bin_size);
0139 ftempsbin = bin(ftemps,bin_size);
0140
0141
0142
0143
0144
0145
0146
0147 dataFreqRoach1=[f' 2.*abs(YRRBalanced(1:NFFT/2+1)) 2*abs(YLLBalanced(1:NFFT/2+1)) 2*abs(YQb(1:NFFT/2+1)) 2*abs(YUb(1:NFFT/2+1)) 2.*abs(YRR(1:NFFT/2+1)) 2*abs(YLL(1:NFFT/2+1)) 2*abs(YI(1:NFFT/2+1)) 2*abs(YIUnstabilized(1:NFFT/2+1))];
0148 dataTimeRoach1=[timeroach skyminusloadrightmean skyminusloadleftmean];
0149
0150
0151
0152
0153
0154
0155 display('Starting Roach 2')
0156 timeroach=(d.antenna0.roach1.utc-d.antenna0.roach2.utc(1)).*24;
0157 timetemps=d.antenna0.thermal.utc-d.antenna0.thermal.utc(1);
0158 timelsTemps= timetemps([1:5:length(timetemps)]).*24;
0159 timeCryoTemps=timetemps.*24;
0160 lengthvec = length(d.antenna0.roach2.RR)
0161 timeroachshort=timeroach(1:lengthvec-0);
0162
0163
0164 ll=mean(d.antenna0.roach2.LL((1:lengthvec-0),4:60),2);
0165 loadl =mean(d.antenna0.roach2.load2((1:lengthvec-0),4:60),2);
0166 rr=mean(d.antenna0.roach2.RR((1:lengthvec-0),4:60),2);
0167 loadr =mean(d.antenna0.roach2.load1((1:lengthvec-0),4:60),2);
0168 Q=mean(d.antenna0.roach2.Q((1:lengthvec-0),4:60),2);
0169 U=mean(d.antenna0.roach2.U((1:lengthvec-0),4:60),2);
0170
0171
0172
0173 llmean=ll-mean(ll);
0174 rrmean=rr-mean(rr);
0175 qmean=Q-mean(Q);
0176 umean=U-mean(U);
0177
0178
0179
0180 rfactorR=mean(rr)./mean(loadr)
0181 rfactorL=mean(ll)./mean(loadl)
0182
0183 rfactorR2=rfactorR;
0184 rfactorL2=rfactorL;
0185
0186
0187
0188 skyminusloadleft = mean(tempsCryo).*ll./loadl;
0189 skyminusloadright = mean(tempsCryo).*rr./loadr;
0190
0191
0192 skyminusloadleftmean = skyminusloadleft-mean(skyminusloadleft);
0193 skyminusloadrightmean = skyminusloadright-mean(skyminusloadright);
0194
0195
0196
0197
0198 amplifierfnoise = skyminusloadleft-skyminusloadright;
0199 amplifierfnoisemean = amplifierfnoise-mean(amplifierfnoise);
0200
0201
0202
0203
0204 templs=d.antenna0.thermal.lsTemperatureSensors(:,2);
0205 tempsmean = templs-mean(templs);
0206 tempsCryo=d.antenna0.thermal.ccTemperatureLoad;
0207
0208
0209
0210
0211 Fs=100;
0212 FsTemps = 1;
0213 T = 1/Fs;
0214 L = length(ll);
0215 t = (0:L-1)*T;
0216 TTemps = 1/FsTemps;
0217 LTemps = length(templs);
0218 tTemps = (0:LTemps-1)*TTemps;
0219 NFFT = 2^nextpow2(L);
0220 NFFTtemps = 2^(nextpow2(LTemps))
0221 f = Fs/2*linspace(0,1,NFFT/2+1);
0222 ftemps = FsTemps/2*linspace(0,1,NFFTtemps/2+1);
0223
0224 YRR = fft(rrmean,NFFT)/L;
0225 YLL = fft(llmean,NFFT)/L;
0226 YQ = fft(qmean,NFFT)/L;
0227 YU = fft(umean,NFFT)/L;
0228 YRRBalanced = fft(skyminusloadrightmean,NFFT)/L;
0229 YLLBalanced = fft(skyminusloadleftmean,NFFT)/L;
0230 Ytemps = fft(tempsmean,NFFTtemps)/LTemps;
0231
0232 Yamplifier = fft(skyminusloadrightmean-skyminusloadleftmean,NFFT)/L;
0233 YI = fft((skyminusloadrightmean+skyminusloadleftmean)./2,NFFT)/L;
0234 YIUnstabilized = fft((rrmean+llmean)./2,NFFT)/L;
0235
0236 YRRb = 2*abs(YRR(1:NFFT/2+1));
0237 YLLb = 2*abs(YLL(1:NFFT/2+1));
0238 YQb = 2*abs(YQ(1:NFFT/2+1));
0239 YUb = 2*abs(YU(1:NFFT/2+1));
0240 YRRBalancedb = 2*abs(YRRBalanced(1:NFFT/2+1));
0241 YLLBalancedb = 2*abs(YLLBalanced(1:NFFT/2+1));
0242 Ytempsb = 2*abs(Ytemps(1:NFFTtemps/2+1));
0243
0244 Yamplifierb = 2*abs(Yamplifier(1:NFFT/2+1));
0245
0246 bin_size=100;
0247 YRRbin=bin(YRRb,bin_size);
0248 YLLbin=bin(YLLb,bin_size);
0249 YQbin=bin(YQb,bin_size);
0250 YUbin=bin(YUb,bin_size);
0251 YRRBalancedbin=bin(YRRBalancedb,bin_size);
0252 YLLBalancedbin=bin(YLLBalancedb,bin_size);
0253 Ytempsbin=bin(Ytempsb,bin_size);
0254 Yamplifierbin=bin(Yamplifierb,bin_size);
0255 fbin = bin(f,bin_size);
0256 ftempsbin = bin(ftemps,bin_size);
0257
0258
0259
0260
0261
0262
0263
0264 dataFreqRoach2=[f' 2.*abs(YRRBalanced(1:NFFT/2+1)) 2*abs(YLLBalanced(1:NFFT/2+1)) 2*abs(YQb(1:NFFT/2+1)) 2*abs(YUb(1:NFFT/2+1)) 2.*abs(YRR(1:NFFT/2+1)) 2*abs(YLL(1:NFFT/2+1)) 2*abs(YI(1:NFFT/2+1)) 2*abs(YIUnstabilized(1:NFFT/2+1))];
0265 dataTimeRoach2=[timeroach skyminusloadrightmean skyminusloadleftmean];
0266
0267
0268
0269
0270
0271
0272 dataTimeTempLs=[timelsTemps templs];
0273 dataTimeTempCryo=[timeCryoTemps tempsCryo];
0274
0275
0276
0277
0278 dataOut.dataFreqRoach1=dataFreqRoach1;
0279 dataOut.dataFreqRoach2=dataFreqRoach2;
0280 dataOut.dataTimeRoach1=dataTimeRoach1;
0281 dataOut.dataTimeRoach2=dataTimeRoach2;
0282 dataOut.dataTimeTempLs=dataTimeTempLs;
0283 dataOut.dataTimeTempCryo=dataTimeTempCryo;
0284 dataOut.rFactorR1=rfactorR1;
0285 dataOut.rFactorL1=rfactorL1;
0286 dataOut.rFactorR2=rfactorR2;
0287 dataOut.rFactorL2=rfactorL2;
0288
0289
0290 if(graphics==1)
0291
0292 titlestring = 'Power Spectrum'
0293 figure
0294 subplot(414)
0295 loglog(dataFreqRoach(:,1),dataFreqRoach(:,4))
0296 hold all
0297 loglog(dataFreqRoach(:,1),dataFreqRoach(:,5))
0298 grid on
0299 title('Polarisation')
0300 subplot(413)
0301 plot(dataTimeRoach(:,1),dataTimeRoach(:,2))
0302 hold all
0303 plot(dataTimeRoach(:,1),dataTimeRoach(:,3))
0304
0305 xlabel('Time [Hr]')
0306 ylabel('BU')
0307 titlestring=['Time Series: ']
0308 title(titlestring)
0309 ylim('auto')
0310 grid on
0311 subplot(412)
0312 plot(dataTimeTempCryo(:,1),dataTimeTempCryo(:,2))
0313 xlabel('Time [Hr]')
0314 ylabel('Temperature [K]')
0315 title('Load/Sky Temperature')
0316 grid on
0317 ylim('auto')
0318 subplot(411)
0319 loglog(dataFreqRoach(:,1),dataFreqRoach(:,2))
0320 hold all
0321 loglog(dataFreqRoach(:,1),dataFreqRoach(:,3))
0322 grid on
0323 legend('RCP','LCP','Location','SouthWest')
0324 xlabel('Time [Hr]')
0325 ylabel('BU')
0326
0327 title('Intensity')
0328 if(saveFile==1)
0329 print('-depsc',varargin{2})
0330 end
0331
0332 end