Improving confidence in power spectra
Contents
Getting started
load SynthSig;
Intro
In the previous two tutorials we saw that there are some shortcomings to simply taking the raw powerspectra. First, if there is a large peak in the data it can leak energy to surrounding frequencies. Second, it is typically desirable to distinguish if a peak is significant. This typically requires some sort of averaging technique.
Reducing leakage.
The favoured method for reducing leakage is to window the data before performing the fft.
x = sig.x_peak; N = length(x); W = hanning(N)'; W = W./sqrt(mean(abs(W).^2)); y = x.*W; dt=median(diff(sig.t)); [px,f]=rawPowerSpec(x,dt); figure(2); clf subplot(2,1,1); plot(sig.t,x); hold on; ylabel('x [m]'); xlabel('t [s]'); subplot(2,1,2); loglog(f,px); hold on; set(gca,'ylim',[1e-6 1e3]); xlabel('F [Hz]'); ylabel('\phi_x [m^2 Hz^{-1}]'); print -dpng -r250 doc/NoWindow subplot(2,1,1); plot(sig.t,y,'b'); [py,f]=rawPowerSpec(y,dt); subplot(2,1,2); loglog(f,py,'b'); print -dpng -r250 doc/Window set(gca,'xlim',[0.2 0.8]); print -dpng -r250 doc/WindowZoom

Here we see how applying the window has tightened the spectrum. Note however, that the peak has been spread a little bit into adjoining bins. Lets try on a braodband spectrum. Note that here we have to make the peak very prominent to make the effect important. However, also notice that the rest of the spectrum is not unduly disturbed.
figure(12);clf x = sig.x+30*sig.x_peak; W = hanning(N)'; W = N*W./sum(W); y = x.*W; clf subplot(3,1,1); plot(sig.t,x,sig.t,y); dt=median(diff(sig.t)); [px,f]=rawPowerSpec(x,dt); [py,f]=rawPowerSpec(y,dt); subplot(3,1,2); loglog(f,px,f,py); set(gca,'ylim',[1e-6 1e6]); xlabel('F [Hz]'); ylabel('\phi_x [m^2 Hz^{-1}]'); subplot(3,1,3); loglog(f,px,f,py); set(gca,'ylim',[1e-2 1e6]); xlabel('F [Hz]'); ylabel('\phi_x [m^2 Hz^{-1}]'); set(gca,'xlim',[1e-1 10e-1]); print -dpng -r250 doc/TaperingAgain

The Periodigram
The next procedure that is often carried out is to average the data somewhat. This can reveal shapes to the spectra that are not readily apparent in their rougher form.
The most common technique is the periodigram. This is accomplished by reshaping the data into blocks nfft long, windowing the data, and then taking the fft on each block. The resulting spectra are averaged. Because the windowing removes data at the edges, it is usual to overlap the windows by at least 50%. The overlapping logic requires a bit of care,
x = sig.x_r+sig.x_w+sig.x_peak/10; [px0,f0]=rawPowerSpec(detrend(x,0),dt); jmkfigure(11,2,0.4);clf [p,f,dof0,conf0]=periodogramPowerSpec(x,dt,length(x)); loglog(f,p); line([0.1 0.1],conf0/1000,'linesty','-','linewi',2) hold on;plot([0.1],1/1000,'o','markerfacecol','k','markersi',10) xlabel('f [Hz]'); ylabel('P_x [m^2 Hz^{-1}]'); if dop docprint('ConfInterval','FftTechniques.m'); end;
N = 2001 nind = 1

Spectral Smoothing...
First, lets do the most obvious thing and smooth the spectra in frequency space...
psmooth = conv2(p,ones(1,10)/10,'same') loglog(f,psmooth,'b'); % set(gca,'xlim',[0.06 1]) line([0.1 0.1],conf0/1000,'linesty','-','linewi',2) if dop docprint('FreqSmooth','FftTechniques.m'); end;
psmooth = Columns 1 through 8 32.1506 32.5134 32.5201 32.6132 32.6522 7.5511 7.3925 4.1905 Columns 9 through 16 2.7564 1.6744 0.9328 0.7766 0.8286 0.7602 0.8528 0.9494 Columns 17 through 24 0.8577 0.8117 0.8074 0.8021 0.6978 0.5343 0.5057 0.4851 Columns 25 through 32 0.3695 0.2425 0.2192 0.1943 0.2269 0.2426 0.1954 0.1699 Columns 33 through 40 0.1404 0.1463 0.1506 0.1726 0.1854 0.1949 0.1540 0.1317 Columns 41 through 48 0.1470 0.1479 0.1530 0.1461 0.1284 0.0928 0.0751 0.0643 Columns 49 through 56 0.0647 0.0594 0.0561 0.0566 0.0568 0.0560 0.0639 0.0827 Columns 57 through 64 0.0995 0.1122 0.1161 0.1227 0.1289 0.1119 0.1099 0.1094 Columns 65 through 72 0.1001 0.0831 0.0666 0.0534 0.0568 0.0501 0.0291 0.0299 Columns 73 through 80 0.0329 0.0340 0.0373 0.1031 0.1625 0.1646 0.1561 0.1641 Columns 81 through 88 0.1720 0.1694 0.1687 0.1681 0.1684 0.1048 0.0443 0.0394 Columns 89 through 96 0.0415 0.0369 0.0328 0.0379 0.0376 0.0360 0.0312 0.0298 Columns 97 through 104 0.0349 0.0350 0.0318 0.0291 0.0291 0.0257 0.0269 0.0351 Columns 105 through 112 0.0389 0.0415 0.0421 0.0421 0.0445 0.0431 0.0404 0.0405 Columns 113 through 120 0.0339 0.0286 0.0326 0.0354 0.0318 0.0311 0.0302 0.0339 Columns 121 through 128 0.0328 0.0335 0.0386 0.0462 0.0447 0.0358 0.0340 0.0351 Columns 129 through 136 0.0336 0.0301 0.0318 0.0352 0.0314 0.0203 0.0148 0.0178 Columns 137 through 144 0.0287 0.0382 0.0438 0.0459 0.0440 0.0381 0.0376 0.0386 Columns 145 through 152 0.0377 0.0347 0.0298 0.0362 0.0324 0.0349 0.0385 0.0387 Columns 153 through 160 0.0394 0.0391 0.0394 0.0398 0.0331 0.0169 0.0154 0.0133 Columns 161 through 168 0.0119 0.0120 0.0106 0.0139 0.0135 0.0176 0.0214 0.0244 Columns 169 through 176 0.0248 0.0213 0.0224 0.0260 0.0266 0.0245 0.0272 0.0226 Columns 177 through 184 0.0193 0.0156 0.0145 0.0146 0.0113 0.0094 0.0130 0.0160 Columns 185 through 192 0.0234 0.0283 0.0296 0.0313 0.0349 0.0394 0.0404 0.0400 Columns 193 through 200 0.0447 0.0417 0.0343 0.0326 0.0315 0.0307 0.0283 0.0249 Columns 201 through 208 0.0253 0.0282 0.0247 0.0261 0.0264 0.0268 0.0325 0.0409 Columns 209 through 216 0.0413 0.0405 0.0407 0.0379 0.0324 0.0304 0.0304 0.0273 Columns 217 through 224 0.0226 0.0138 0.0137 0.0163 0.0169 0.0151 0.0155 0.0183 Columns 225 through 232 0.0167 0.0179 0.0180 0.0192 0.0181 0.0168 0.0156 0.0193 Columns 233 through 240 0.0230 0.0213 0.0206 0.0191 0.0176 0.0171 0.0175 0.0163 Columns 241 through 248 0.0183 0.0175 0.0164 0.0151 0.0161 0.0185 0.0245 0.0347 Columns 249 through 256 0.0349 0.0360 0.0332 0.0315 0.0296 0.0293 0.0314 0.0320 Columns 257 through 264 0.0301 0.0275 0.0295 0.0291 0.0290 0.0295 0.0315 0.0330 Columns 265 through 272 0.0346 0.0378 0.0356 0.0275 0.0247 0.0240 0.0258 0.0250 Columns 273 through 280 0.0222 0.0205 0.0171 0.0114 0.0092 0.0104 0.0130 0.0153 Columns 281 through 288 0.0155 0.0155 0.0155 0.0178 0.0160 0.0170 0.0193 0.0191 Columns 289 through 296 0.0163 0.0168 0.0166 0.0162 0.0168 0.0163 0.0252 0.0340 Columns 297 through 304 0.0353 0.0361 0.0363 0.0335 0.0316 0.0315 0.0311 0.0313 Columns 305 through 312 0.0293 0.0209 0.0181 0.0177 0.0184 0.0186 0.0192 0.0229 Columns 313 through 320 0.0243 0.0240 0.0185 0.0179 0.0187 0.0195 0.0214 0.0233 Columns 321 through 328 0.0241 0.0216 0.0214 0.0197 0.0211 0.0221 0.0213 0.0207 Columns 329 through 336 0.0202 0.0190 0.0178 0.0191 0.0190 0.0204 0.0220 0.0236 Columns 337 through 344 0.0233 0.0250 0.0262 0.0260 0.0278 0.0306 0.0381 0.0402 Columns 345 through 352 0.0379 0.0341 0.0348 0.0338 0.0313 0.0306 0.0299 0.0246 Columns 353 through 360 0.0164 0.0157 0.0162 0.0172 0.0165 0.0140 0.0137 0.0154 Columns 361 through 368 0.0153 0.0147 0.0147 0.0154 0.0196 0.0224 0.0242 0.0256 Columns 369 through 376 0.0260 0.0256 0.0291 0.0325 0.0339 0.0337 0.0313 0.0289 Columns 377 through 384 0.0275 0.0271 0.0286 0.0339 0.0376 0.0352 0.0328 0.0287 Columns 385 through 392 0.0247 0.0237 0.0234 0.0224 0.0219 0.0196 0.0131 0.0137 Columns 393 through 400 0.0141 0.0142 0.0142 0.0138 0.0131 0.0130 0.0112 0.0105 Columns 401 through 408 0.0096 0.0109 0.0136 0.0155 0.0165 0.0171 0.0211 0.0221 Columns 409 through 416 0.0216 0.0180 0.0174 0.0145 0.0113 0.0097 0.0092 0.0091 Columns 417 through 424 0.0057 0.0046 0.0050 0.0110 0.0154 0.0153 0.0172 0.0193 Columns 425 through 432 0.0192 0.0192 0.0195 0.0195 0.0203 0.0157 0.0130 0.0142 Columns 433 through 440 0.0122 0.0108 0.0108 0.0108 0.0104 0.0104 0.0095 0.0080 Columns 441 through 448 0.0058 0.0051 0.0055 0.0048 0.0058 0.0083 0.0091 0.0103 Columns 449 through 456 0.0117 0.0120 0.0153 0.0172 0.0181 0.0188 0.0177 0.0164 Columns 457 through 464 0.0170 0.0156 0.0170 0.0177 0.0174 0.0179 0.0174 0.0165 Columns 465 through 472 0.0163 0.0154 0.0177 0.0266 0.0308 0.0349 0.0323 0.0310 Columns 473 through 480 0.0333 0.0335 0.0350 0.0359 0.0323 0.0239 0.0177 0.0151 Columns 481 through 488 0.0190 0.0240 0.0272 0.0279 0.0266 0.0247 0.0251 0.0269 Columns 489 through 496 0.0257 0.0240 0.0208 0.0147 0.0084 0.0075 0.0076 0.0084 Columns 497 through 504 0.0083 0.0081 0.0099 0.0103 0.0093 0.0096 0.0100 0.0136 Columns 505 through 512 0.0180 0.0198 0.0200 0.0183 0.0183 0.0224 0.0249 0.0250 Columns 513 through 520 0.0268 0.0254 0.0207 0.0182 0.0175 0.0169 0.0150 0.0099 Columns 521 through 528 0.0127 0.0179 0.0172 0.0162 0.0161 0.0175 0.0221 0.0251 Columns 529 through 536 0.0255 0.0314 0.0330 0.0280 0.0279 0.0271 0.0269 0.0256 Columns 537 through 544 0.0212 0.0193 0.0193 0.0159 0.0121 0.0121 0.0117 0.0127 Columns 545 through 552 0.0131 0.0131 0.0127 0.0123 0.0119 0.0101 0.0100 0.0111 Columns 553 through 560 0.0108 0.0093 0.0100 0.0139 0.0157 0.0154 0.0154 0.0151 Columns 561 through 568 0.0139 0.0162 0.0180 0.0182 0.0169 0.0139 0.0123 0.0138 Columns 569 through 576 0.0189 0.0229 0.0235 0.0225 0.0251 0.0300 0.0317 0.0312 Columns 577 through 584 0.0310 0.0300 0.0258 0.0216 0.0190 0.0157 0.0107 0.0066 Columns 585 through 592 0.0066 0.0102 0.0129 0.0122 0.0114 0.0116 0.0125 0.0144 Columns 593 through 600 0.0171 0.0168 0.0151 0.0112 0.0080 0.0080 0.0088 0.0104 Columns 601 through 608 0.0097 0.0079 0.0060 0.0141 0.0303 0.0408 0.0436 0.0458 Columns 609 through 616 0.0511 0.0529 0.0562 0.0589 0.0589 0.0512 0.0367 0.0270 Columns 617 through 624 0.0251 0.0232 0.0173 0.0142 0.0115 0.0113 0.0112 0.0109 Columns 625 through 632 0.0131 0.0126 0.0123 0.0122 0.0125 0.0123 0.0115 0.0089 Columns 633 through 640 0.0096 0.0109 0.0070 0.0076 0.0079 0.0075 0.0067 0.0076 Columns 641 through 648 0.0125 0.0160 0.0149 0.0125 0.0128 0.0128 0.0168 0.0200 Columns 649 through 656 0.0215 0.0230 0.0217 0.0197 0.0208 0.0215 0.0216 0.0217 Columns 657 through 664 0.0224 0.0196 0.0211 0.0190 0.0161 0.0147 0.0150 0.0142 Columns 665 through 672 0.0140 0.0129 0.0083 0.0082 0.0057 0.0052 0.0045 0.0049 Columns 673 through 680 0.0043 0.0097 0.0115 0.0116 0.0117 0.0117 0.0111 0.0111 Columns 681 through 688 0.0166 0.0201 0.0199 0.0152 0.0135 0.0146 0.0183 0.0215 Columns 689 through 696 0.0252 0.0271 0.0266 0.0234 0.0229 0.0242 0.0272 0.0283 Columns 697 through 704 0.0292 0.0299 0.0270 0.0249 0.0206 0.0229 0.0293 0.0320 Columns 705 through 712 0.0293 0.0295 0.0266 0.0233 0.0226 0.0239 0.0249 0.0264 Columns 713 through 720 0.0250 0.0211 0.0214 0.0218 0.0213 0.0218 0.0227 0.0245 Columns 721 through 728 0.0281 0.0264 0.0213 0.0213 0.0206 0.0183 0.0164 0.0175 Columns 729 through 736 0.0208 0.0228 0.0206 0.0184 0.0201 0.0224 0.0229 0.0222 Columns 737 through 744 0.0221 0.0197 0.0163 0.0109 0.0085 0.0086 0.0069 0.0043 Columns 745 through 752 0.0046 0.0056 0.0057 0.0057 0.0065 0.0101 0.0095 0.0087 Columns 753 through 760 0.0092 0.0099 0.0139 0.0188 0.0200 0.0202 0.0198 0.0178 Columns 761 through 768 0.0188 0.0199 0.0200 0.0190 0.0166 0.0116 0.0108 0.0115 Columns 769 through 776 0.0117 0.0103 0.0097 0.0095 0.0113 0.0126 0.0113 0.0117 Columns 777 through 784 0.0113 0.0110 0.0103 0.0123 0.0133 0.0122 0.0114 0.0102 Columns 785 through 792 0.0160 0.0188 0.0215 0.0241 0.0236 0.0214 0.0202 0.0213 Columns 793 through 800 0.0203 0.0201 0.0137 0.0098 0.0075 0.0062 0.0067 0.0075 Columns 801 through 808 0.0080 0.0072 0.0078 0.0100 0.0109 0.0113 0.0107 0.0098 Columns 809 through 816 0.0094 0.0110 0.0198 0.0260 0.0263 0.0256 0.0272 0.0280 Columns 817 through 824 0.0280 0.0286 0.0300 0.0278 0.0254 0.0267 0.0269 0.0266 Columns 825 through 832 0.0308 0.0333 0.0345 0.0356 0.0359 0.0370 0.0300 0.0228 Columns 833 through 840 0.0229 0.0222 0.0151 0.0114 0.0108 0.0117 0.0116 0.0110 Columns 841 through 848 0.0109 0.0120 0.0125 0.0134 0.0142 0.0142 0.0143 0.0130 Columns 849 through 856 0.0149 0.0163 0.0165 0.0176 0.0204 0.0227 0.0254 0.0259 Columns 857 through 864 0.0253 0.0232 0.0206 0.0226 0.0226 0.0223 0.0177 0.0138 Columns 865 through 872 0.0115 0.0143 0.0160 0.0169 0.0155 0.0135 0.0163 0.0157 Columns 873 through 880 0.0155 0.0188 0.0187 0.0156 0.0140 0.0142 0.0142 0.0123 Columns 881 through 888 0.0094 0.0077 0.0084 0.0054 0.0058 0.0064 0.0062 0.0061 Columns 889 through 896 0.0074 0.0075 0.0077 0.0082 0.0088 0.0141 0.0203 0.0259 Columns 897 through 904 0.0293 0.0298 0.0288 0.0287 0.0290 0.0290 0.0277 0.0220 Columns 905 through 912 0.0142 0.0077 0.0046 0.0035 0.0046 0.0052 0.0049 0.0046 Columns 913 through 920 0.0051 0.0097 0.0127 0.0148 0.0150 0.0151 0.0139 0.0156 Columns 921 through 928 0.0163 0.0172 0.0171 0.0128 0.0124 0.0164 0.0232 0.0274 Columns 929 through 936 0.0321 0.0321 0.0312 0.0325 0.0366 0.0377 0.0376 0.0342 Columns 937 through 944 0.0280 0.0235 0.0210 0.0222 0.0232 0.0209 0.0172 0.0160 Columns 945 through 952 0.0137 0.0108 0.0097 0.0103 0.0086 0.0072 0.0095 0.0119 Columns 953 through 960 0.0129 0.0148 0.0166 0.0181 0.0183 0.0194 0.0210 0.0201 Columns 961 through 968 0.0169 0.0146 0.0149 0.0168 0.0174 0.0168 0.0181 0.0182 Columns 969 through 976 0.0168 0.0161 0.0174 0.0184 0.0167 0.0137 0.0117 0.0109 Columns 977 through 984 0.0096 0.0081 0.0068 0.0070 0.0067 0.0064 0.0078 0.0070 Columns 985 through 992 0.0064 0.0062 0.0073 0.0071 0.0077 0.0073 0.0067 0.0060 Columns 993 through 1000 0.0043 0.0065 0.0140 0.0138 0.0122 0.0121 0.0115 0.0111

logarithmic smoothing...
loglog(f,logsmooth(p),'r'); if dop docprint('LogSmooth','FftTechniques.m'); end;

Periodigrams with incremental smoothing and confidence intervals...
Periodigram...
jmkfigure(12,2,0.8); clf subplot(3,1,1); loglog(f0,px0); hold on; % Theoretical power spectra % The three wave forms plotted above have known power spectra. f = f0; df = median(diff(f)); % it is usual to plot spectra in terms of cycles/s. P_w = f*0+var(sig.x_w)/max(f); P_r = f.^(-2); P_r = P_r./sum(P_r*df)*var(sig.x_r); P_peak = f*0; %in = find(om==om_peak); %P_peak(in) = 1*var(sig.x_peak)/df/10; % rename so we don't overwrite by accident. th.f=f; th.P_r=P_r; th.P_w=P_w; th.P_peak=P_peak; th.Px = th.P_r+th.P_w+th.P_peak; % loglog(th.f,th.P_w,'col',[1 1 1]*0.5); hold on; loglog(th.f,th.P_r,'r'); loglog(th.f,th.P_peak,'bx','markersi',10); loglog(th.f,th.Px,'k'); xlabel('f [Hz]'); ylabel('P_x [m^2 Hz^{-1}]'); title('Theoretical spectrum of synthetic signals'); set(gca,'ylim',[1e-2 5e2]); nfft_in = 512/2; N = length(x) nfft=min([nfft_in N]); repeats=round(2*N/nfft) starts = floor(linspace(1,N-nfft,repeats)) X = [1:nfft]'*ones(1,repeats); X = ceil(X+ones(nfft,1)*(starts-1)); t = sig.t; x0 = x;t0=t; x = x(floor(X)); t = t(floor(X)); % must remove the trend from each block x = detrend(x,0); W = hanning(nfft)'; W = sqrt(nfft)*W./norm(W); W = W./sqrt(mean(W.^2)); x = x.*repmat(W',1,size(x,2)); subplot(3,1,2); plot(t,x); hold on; plot(t0,x0+3); xlabel('t [s]'); ylabel('x [m]'); Px = dt*fft(x); dt = median(diff(sig.t)); N = nfft; if mod(N,2)==1 nn = nfft; else nn=nfft-1; end; f = (0:nfft-1)/nfft/dt; f = f(2:(nn/2)); Px = Px(2:(nn/2),:); Px =Px.*conj(Px)*2/dt/N; subplot(3,1,3); loglog(f,Px) hold on; loglog(f,nanmean(Px'),'linewi',2) loglog(th.f,th.Px,'linewi',1) set(gca,'ylim',[1e-2 1e2],'xlim',[1e-3 10]); xlabel('f [Hz]'); ylabel('P_x [m^2 Hz^{-1}]'); print -dpng -r200 doc/PeriodigramTech
N = 2001 repeats = 16 starts = Columns 1 through 7 1 117 233 349 466 582 698 Columns 8 through 14 814 931 1047 1163 1279 1396 1512 Columns 15 through 16 1628 1745

We can package th is procedure up into a periodigram m-file
Here we compare the results from 4 different fft lengths. The degrees of freedom and confidence intervals (in logarithmic space) are given. Note the peak only becomes statistically significant for nfft=512.
Also note the tradeoffs. The peak is less well resolved for shorter nfft. And less of the lower frequencies are resilved.
The other advantage, though, is a smoother resolution of the spectra at other frequencies. The take-home lesson is that a variety of spectral methods should be tried if the goal is data interpretation.
jmkfigure(3,2,0.5);clf nfft = fliplr(256*[1 2 4 (length(x))/256]); x = 2*sig.x_r+sig.x_w+sig.x_peak/10; col ={'r','g','b','m'}; for i=1:length(nfft); [p,f,dof(i),conf(i,:)]=periodogramPowerSpec(x,dt,nfft(i)); % [pp,ff]=pwelch(x,hanning(nfft(i)),nfft(i)/2,nfft(i),1/dt); loglog(f,p,'col',col{i}); hold on; loglog(th.f,th.Px,'col','k'); % loglog(ff,pp,':','col',col{i}); line([1 1]*10.^(i-4)*2,conf(i,:)*1e-4,'col',col{i},'linewi',2) plot([1]*10.^(i-4)*2,1e-4,'o','markerfacecol',col{i},'col',col{i},'markersize',10) text(10.^(i-4)*2,7e-6,sprintf('nfft=%d\ndof=%1.2f',nfft(i),dof(i)),'horizontalal','center'); hold on; % loglog(ff,pp,'--','col',col{i}); set(gca,'ylim',[1e-6 1e2]) ppause end; xlabel('F [Hz]'); ylabel('\Phi_x [V^2 Hz^{-1}]'); if dop print -dpng -r200 doc/Periodigrams end; ppause if 1 i = 3 set(gca,'xlim',[0.1 1],'ylim',[0.01 10]); line([1 1]*.6,conf(i,:)*1,'col',col{i},'linewi',2) plot([1]*0.6,1,'o','markerfacecol',col{i},'col',col{i},'markersize',10) print -dpng -r200 doc/PeriodigramsZoom end;
N = 2001 starts = Columns 1 through 7 1 125 250 374 499 623 748 Columns 8 through 14 873 997 1122 1246 1371 1495 1620 Column 15 1745 nind = 14.6328 Pausing... N = 2001 starts = 1 489 977 nind = 2.9082 Pausing... N = 2001 starts = 1 249 497 745 993 1241 1489 nind = 6.8164 Pausing... N = 2001 starts = Columns 1 through 7 1 125 250 374 499 623 748 Columns 8 through 14 873 997 1122 1246 1371 1495 1620 Column 15 1745 nind = 14.6328 Pausing... Pausing... i = 3

Plots of chi2 for these different degrees of freedom.
x = logspace(-3,3,1000); jmkfigure(101,2,0.5); clf dof = [1 2 4 8 16]; nn = 0 col = {'b' 'k' 'r' 'g' 'm'} for i=1:length(dof); nn = nn+1; pp = chi2cdf(x,dof(i)); semilogy(pp,x/dof(i),'col',col{i},'linewi',1); hold on; % set(gca,'xlim',[1e-2 100]); grid on; ind = find(pp>0.05);ind = ind(1); ind2 = find(pp>0.95);ind2 = ind2(1); line(nn*0.1*[1 1],[x(ind)/dof(i) x(ind2)/dof(i)],'linewi',2,'col',col{i}); plot(nn*0.1,1,'o','markersi',7,'markerfacecol',col{i},'linewi',2,'col',col{i}); text(nn*0.1,10,sprintf('DOF = %d',dof(i)),'rotat',90); % line([0.01 100],[0.05 0.05]); % line([0.01 100],1-[0.05 0.05]); end; pp = chi2cdf(x,2); semilogx(pp,x/2,'linewi',2); ylabel('S_x / E[S_x]','fontsi',12); xlabel('CDF \chi^2_n','fontsi',12); if dop docprint('chi2','FftTechniques.m'); end; % print -dpng -r150 doc/chi2
nn = 0 col = 'b' 'k' 'r' 'g' 'm'
