1 <?xml version="1.0" encoding="UTF-8"?>
3 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="corr">
7 <refname>corr</refname>
9 <refpurpose>相関 , 共分散</refpurpose>
17 <synopsis>[cov,Mean]=corr(x,[y],nlags)
19 [cov,Mean]=corr('fft',xmacro,[ymacro],n,sect)
23 [w,xu]=corr('updt',x1,[y1],w0)
25 [w,xu]=corr('updt',x2,[y2],w,xu)
29 [wk]=corr('updt',xk,[yk],w,xu)
59 <para>実数ベクトル, デフォルト値 x.</para>
71 <para>i整数, 指定した相関係数の数.</para>
83 <para>scilab 外部ルーチン (下記参照).</para>
95 <para>scilab 外部ルーチン (下記参照), デフォルト値: xmacro</para>
107 <para>整数, シーケンス全体の大きさ (下記参照).</para>
119 <para>シーケンスのセクションの大きさ (下記参照).</para>
143 <para>実数ベクトル,デフォルト値: xi.</para>
155 <para>実数ベクトル, 相関係数</para>
167 <para>実数または実数ベクトル, x (および y)の平均</para>
187 <programlisting role=""><![CDATA[
191 cov(m) = > (x(k) - xmean) (y(m+k) - ymean) * ---
199 ただし, m=0,..,<literal>nlag-1</literal> で,2つのベクトルは
201 <literal>x=[x(1),..,x(n)]</literal>,
203 <literal>y=[y(1),..,y(n)]</literal>です.
209 シーケンス x および y が異なる場合, corr(x,y,...)はcorr(y,x,...)
225 <literal>[cov,Mean]=corr(x,[y],nlags)</literal> は,
227 最初の nlags 個の相関係数および Mean = <literal>mean(x)</literal>
229 (<literal>y</literal> が引数として指定された場合,<literal>[x,y]</literal> の平均)
233 シーケンス <literal>x</literal> (または <literal>y</literal>) は実数,
235 <literal>x</literal>と<literal>y</literal>は同じ次元 n と仮定されます.
251 <literal>[cov,Mean]=corr('fft',xmacro,[ymacro],n,sect)</literal>
253 ここで,<literal>xmacro</literal> は以下のどちらかです
263 <literal>[xx]=xmacro(sect,istart)</literal> という型の関数で,
265 <literal>istart</literal> から
267 <literal>istart+sect-1</literal>までの添字を有するシーケンスの
271 <literal>nsect</literal>次のベクトル<literal>xx</literal>を返します.
281 FortranサブルーチンまたはCプロシージャで,
283 同じ計算を行ないます(例えば,<literal>dgetx</literal>の
287 <literal>n</literal> = シーケンスの総数.
289 <literal>sect</literal> = シーケンスのセクションの大きさ.
291 <literal>sect</literal> は 2の累乗とする必要があります.
293 <literal>cov</literal> は
295 <literal>sect</literal>次です.
315 <programlisting role=""><![CDATA[
316 [w,xu]=corr('updt',x1,[y1],w0)
317 [w,xu]=corr('updt',x2,[y2],w,xu)
319 wk=corr('updt',xk,[yk],w,xu)
324 この呼び出し手順では,計算結果が<literal>corr</literal>をコールする度に
330 <programlisting role=""><![CDATA[
331 w0 = 0*ones(1,2*nlags);
337 <literal>x1,x2,...</literal> は,
339 <literal>x=[x1,x2,...]</literal>で,<literal>xi</literal>の大きさが
341 2の累乗となるような<literal>x</literal> の一部です.
343 <literal>nlags</literal>個の係数を得るには,
345 最後の fft を <literal>c=fft(w,1)/n</literal>;
347 <literal>cov=c(1nlags)</literal>を実行する必要があります
349 (<literal>n</literal> は <literal>x (y)</literal>の大きさ).
353 この呼び出し手順は <literal>xmean = ymean = 0</literal> を仮定します.
369 <programlisting role="example"><![CDATA[
370 x=%pi/10:%pi/10:102.4*%pi;
371 rand('seed');rand('normal');
372 y=[.8*sin(x)+.8*sin(2*x)+rand(x);.8*sin(x)+.8*sin(1.99*x)+rand(x)];
374 for j=1:2,for k=1:2,c=[c;corr(y(k,:),y(j,:),64)];end;end;
375 c=matrix(c,2,128);cov=[];
376 for j=1:64,cov=[cov;c(:,(j-1)*2+1:2*j)];end;
379 rand('normal');x=rand(1,256);y=-x;
380 deff('[z]=xx(inc,is)','z=x(is:is+inc-1)');
381 deff('[z]=yy(inc,is)','z=y(is:is+inc-1)');
382 [c,mxy]=corr(x,y,32);
383 x=x-mxy(1)*ones(x);y=y-mxy(2)*ones(y); //centring
384 c1=corr(x,y,32);c2=corr(x,32);
386 [c3,m3]=corr('fft',xx,yy,256,32);
388 [c4,m4]=corr('fft',xx,256,32);
389 norm(m3,1),norm(m4,1)
390 norm(c3-c1,1),norm(c4-c2,1)
391 x1=x(1:128);x2=x(129:256);
392 y1=y(1:128);y2=y(129:256);
393 w0=0*ones(1:64); //32 coeffs
394 [w1,xu]=corr('u',x1,y1,w0);w2=corr('u',x2,y2,w1,xu);
395 zz=real(fft(w2,1))/256;c5=zz(1:32);
397 [w1,xu]=corr('u',x1,w0);w2=corr('u',x2,w1,xu);
398 zz=real(fft(w2,1))/256;c6=zz(1:32);
402 // Fortran または C 外部ルーチンのテスト
404 deff('[y]=xmacro(sec,ist)','y=sin(ist:(ist+sec-1))');
406 [cc1,mm1]=corr(x,2^3);
407 [cc,mm]=corr('fft',xmacro,100,2^3);
408 [cc2,mm2]=corr('fft','corexx',100,2^3);
409 [max(abs(cc-cc1)),max(abs(mm-mm1)),max(abs(cc-cc2)),max(abs(mm-mm2))]
411 deff('[y]=ymacro(sec,ist)','y=cos(ist:(ist+sec-1))');
413 [cc1,mm1]=corr(x,y,2^3);
414 [cc,mm]=corr('fft',xmacro,ymacro,100,2^3);
415 [cc2,mm2]=corr('fft','corexx','corexy',100,2^3);
416 [max(abs(cc-cc1)),max(abs(mm-mm1)),max(abs(cc-cc2)),max(abs(mm-mm2))]
421 <refsection role="see also">
425 <simplelist type="inline">
429 <link linkend="fft">fft</link>