0001 function [horzFlag satFlag sunFlag moonFlag] = flagRFI_pos(d, Antenna)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 epochN_1 = '15-Jul-2011:00:00:00';
0026
0027
0028 horzAzN_1 = [168.5 318];
0029 horzAzN_2 = [];
0030 horzAzS = [];
0031
0032
0033 horzRadN_1 = [40 40];
0034 horzRadN_2 = [];
0035 horzRadS = [];
0036
0037
0038 satAzN_1 = [110.5 119 138.5 146 157.5 170 176.5 183 186.5 190 199.5 202.5 205.5 208];
0039 satAzN_2 = [110.5];
0040 satAzS = [];
0041
0042
0043 satRadN_1 = 6;
0044 satRadN_2 = 15;
0045 satRadS = 6;
0046
0047
0048 moonRad = 7;
0049 sunRad = 9;
0050
0051
0052
0053 obsLatN = 37.2333;
0054 obsLatS = -30.83;
0055
0056
0057
0058
0059
0060
0061
0062
0063 az = d.antenna0.servo.apparent(:,1);
0064 el = d.antenna0.servo.apparent(:,2);
0065
0066
0067 dLength = length(az);
0068
0069
0070
0071 if Antenna == 1
0072
0073
0074
0075 if (d.antenna0.servo.utc < tstr2mjd(epochN_1))
0076
0077 horzAz = horzAzN_1;
0078 horzRad = horzRadN_1;
0079 satAz = satAzN_1;
0080 satRad = satRadN_1;
0081 obsLat = obsLatN;
0082 else
0083
0084 horzAz = horzAzN_2;
0085 horzRad = horzRadN_2;
0086 satAz = satAzN_2;
0087 satRad = satRadN_2;
0088 obsLat = obsLatN;
0089 end
0090
0091
0092 elseif Antenna == 2
0093 horzAz = horzAzS;
0094 horzRad = horzRadS;
0095 satAz = satAzS;
0096 satRad = satRadS;
0097 obsLat = obsLatS;
0098
0099
0100 else
0101 return;
0102 end
0103
0104
0105 nHorz = length(horzAz);
0106
0107 nSat = length(satAz);
0108
0109
0110
0111
0112 satPhi = asind(sqrt(sind(obsLat)^2./(1-sind(satAz).^2*cosd(obsLat)^2)));
0113 satEl = acosd(sind(satPhi) ./ sqrt(1 + 0.178^2 - 2 * 0.178 * cosd(satPhi)));
0114
0115
0116
0117 Avals = d.antenna0.tracker.refraction(:,1)*pi/180;
0118 Bvals = d.antenna0.tracker.refraction(:,2)*pi/180;
0119 A = interp1(d.array.frame.utc, Avals, d.antenna0.receiver.utc);
0120 B = interp1(d.array.frame.utc, Bvals, d.antenna0.receiver.utc);
0121
0122 clear Avals;
0123 clear Bvals;
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138 if nSat > 0
0139 for m=1:nSat
0140 thisSatEl = satEl(m);
0141 thisRefracCorr = (A * cosd(thisSatEl) * sind(thisSatEl)^3 + ...
0142 B * sind(thisSatEl) * cosd(thisSatEl)^3 ) ./ ...
0143 (sind(thisSatEl)^4 + A * sind(thisSatEl)^2 + ...
0144 3*B * cosd(thisSatEl)^2) * 180 / pi;
0145
0146
0147
0148
0149
0150 satElCorr(:,m) = thisSatEl + thisRefracCorr;
0151 end
0152
0153 clear thisSatEl;
0154 clear thisRefracCorr;
0155 end
0156
0157
0158
0159
0160
0161 [junk, moonAz, moonEl] = calcSourceDist(d, 'moon');
0162 [junk, sunAz, sunEl] = calcSourceDist(d, 'sun');
0163 clear junk;
0164
0165 moonRefracCorr = (A.*cosd(moonEl).*(sind(moonEl)).^3 + ...
0166 B.*sind(moonEl).*(cosd(moonEl)).^3 ) ./ ...
0167 ((sind(moonEl)).^4 + A.*(sind(moonEl)).^2 + ...
0168 3*B.*(cosd(moonEl)).^2) * 180 / pi;
0169 moonElCorr = moonEl + moonRefracCorr;
0170
0171
0172 clear moonEl;
0173 clear moonRefracCorr;
0174
0175 sunRefracCorr = (A.*cosd(sunEl).*(sind(sunEl)).^3 + ...
0176 B.*sind(sunEl).*(cosd(sunEl)).^3 ) ./ ...
0177 ((sind(sunEl)).^4 + A.*(sind(sunEl)).^2 + ...
0178 3*B.*(cosd(sunEl)).^2) * 180 / pi;
0179
0180 sunElCorr = sunEl + sunRefracCorr;
0181
0182
0183 clear sunEl;
0184 clear sunRefracCorr;
0185
0186
0187
0188
0189
0190
0191
0192
0193 moonFlag = (spaceangle(moonAz, moonElCorr, az, el, 'deg') < moonRad);
0194 sunFlag = (spaceangle(sunAz, sunElCorr, az, el, 'deg') < sunRad);
0195
0196 clear sunElCorr;
0197 clear sunAz;
0198 clear moonElCorr;
0199 clear moonAz;
0200 clear A;
0201 clear B;
0202
0203
0204
0205 if nHorz > 0
0206 horzFlag = max(acosd( ...
0207 cosd(repmat(el,1,nHorz)) .* ...
0208 cosd(repmat(horzAz,dLength,1) - repmat(az,1,nHorz))) < ...
0209 repmat(horzRad,dLength,1),[],2);
0210 else
0211 horzFlag = logical(zeros(dLength,1));
0212 end
0213
0214
0215 clear nHorz
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228 satFlag = logical(zeros(size(el)));
0229 if nSat > 0
0230 for m=1:nSat
0231 thisSatParam = acosd( sind(el) .* sind(satElCorr(:,m)) + ...
0232 cosd(el) .* cosd(satElCorr(:,m)).*cosd(satAz(m) - az)) < satRad;
0233
0234 satFlag = satFlag | thisSatParam;
0235 end
0236 end
0237
0238 clear satElCorr;
0239 clear el;
0240 clear az;
0241
0242 end