0001
0002
0003
0004
0005
0006 function d = opacity(d)
0007
0008
0009 skydip = d.index.skydip.fast & ~d.index.source.fast & ~d.index.noise.fast;
0010 skydipStart=find((diff(d.index.skydip.fast)==1));
0011 skydipEnd=find((diff(d.index.skydip.fast)==-1));
0012 onSourceStart=find((diff(d.index.source.fast)==1));
0013 onSourceEnd=find((diff(d.index.source.fast)==1));
0014 try
0015 d.antenna0.receiver.dataTcorr = d.antenna0.receiver.dataT;
0016 catch
0017 disp('opacity:: No dataT')
0018 d.antenna0.receiver.dataTcorr = d.antenna0.receiver.data;
0019 end
0020
0021
0022
0023 numskydips = min(length(skydipStart),length(skydipEnd));
0024 for i=1:numskydips
0025 index=[skydipStart(i):skydipEnd(i)];
0026 maxEl = find(d.antenna0.servo.el(index)==max(d.antenna0.servo.el(index)));
0027 minEl = find(d.antenna0.servo.el(index)==min(d.antenna0.servo.el(index)));
0028 start_scan = min(index(maxEl),index(minEl));
0029 end_scan = max(index(maxEl),index(minEl));
0030 scan=[start_scan:end_scan];
0031
0032 cscEl=csc(deg2rad(d.antenna0.servo.el));
0033 px1=polyfit(cscEl(scan),d.antenna0.receiver.dataTcorr(scan,1),1);
0034 px2=polyfit(cscEl(scan),d.antenna0.receiver.dataTcorr(scan,6),1);
0035
0036 zero1=px1(1).*1 + px1(2);
0037 zero2=px2(1).*1 + px2(2);
0038 opacity1 = px1(1);
0039 opacity2 = px2(1);
0040 opacity{i} = [skydipStart(i) skydipEnd(i) opacity1 zero1 opacity2 zero2];
0041
0042 end
0043
0044 for i=1:length(opacity)
0045 opstruct.x(i)=mean(opacity{i}(2),opacity{i}(1));
0046 opstruct.op1(i) = opacity{i}(3);
0047 opstruct.op2(i) = opacity{i}(5);
0048 opstruct.zero1(i) = opacity{i}(4);
0049 opstruct.zero2(i) = opacity{i}(6);
0050 end
0051
0052 ind1 = find(~isnan(opstruct.op1));
0053 ind2 = find(~isnan(opstruct.op2));
0054 ind3 = find(~isnan(opstruct.zero1));
0055 ind4 = find(~isnan(opstruct.zero2));
0056
0057 try
0058 opstruct.popacity1=polyfit(opstruct.x(ind1),opstruct.op1(ind1),1);
0059 opstruct.popacity2=polyfit(opstruct.x(ind2),opstruct.op2(ind2),1);
0060 opstruct.pzero1=polyfit(opstruct.x(ind3),opstruct.zero1(ind3),1);
0061 opstruct.pzero2=polyfit(opstruct.x(ind4),opstruct.zero2(ind4),1);
0062
0063
0064 opacity1I = polyval(opstruct.popacity1,[1:length(d.antenna0.receiver.dataTcorr)])';
0065 opacity2I = polyval(opstruct.popacity2,[1:length(d.antenna0.receiver.dataTcorr)])';
0066 zero1I = polyval(opstruct.pzero1,[1:length(d.antenna0.receiver.dataTcorr)])';
0067 zero2I = polyval(opstruct.pzero2,[1:length(d.antenna0.receiver.dataTcorr)])';
0068 catch
0069 opacity1I = opstruct.op1(1);
0070 opacity2I = opstruct.op2(1);
0071 zero1I = opstruct.zero1(1);
0072 zero2I=opstruct.zero2(1);
0073 end
0074
0075 d.antenna0.receiver.dataTcorr(:,1) = d.antenna0.receiver.dataTcorr(:,1) - zero1I - opacity1I.*cscEl;
0076 d.antenna0.receiver.dataTcorr(:,6) = d.antenna0.receiver.dataTcorr(:,6) - zero2I - opacity2I.*cscEl;
0077 p1 = polyfit([1:length(d.antenna0.receiver.dataTcorr)]',d.antenna0.receiver.dataTcorr(:,1),1);
0078 p2 = polyfit([1:length(d.antenna0.receiver.dataTcorr)]',d.antenna0.receiver.dataTcorr(:,6),1);
0079
0080
0081
0082 d.antenna0.receiver.dataTcorr(:,1) = d.antenna0.receiver.dataTcorr(:,1)-polyval(p1,[1:length(d.antenna0.receiver.dataTcorr)]')+5;
0083 d.antenna0.receiver.dataTcorr(:,6) = d.antenna0.receiver.dataTcorr(:,6)-polyval(p1,[1:length(d.antenna0.receiver.dataTcorr)]')+5;
0084
0085
0086
0087
0088
0089 end