Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語 -
Справка Scilab >> Signal Processing > correlation_convolution > corr

corr

корреляция, ковариация

Синтаксис

[cov,Mean] = corr(x,[y],nlags)
[cov,Mean] = corr('fft',xmacro,[ymacro],n,sect)

[w,xu] = corr('updt',x1,[y1],w0)
[w,xu] = corr('updt',x2,[y2],w,xu)
...
wk = corr('updt',xk,[yk],w,xu)

Аргументы

x

вещественный вектор/

y

вещественный вектор, значение по умолчанию x.

nlags

целое число, желаемое количество коэффициентов корреляции.

xmacro

внешняя программа scilab (см. ниже).

ymacro

внешняя программа scilab (см. ниже), значение по умолчанию xmacro.

n

целое число, общий размер последовательности (см. ниже).

sect

размер секций последовательности (см. ниже).

xi

вещественный вектор.

yi

вещественный вектор, значение по умолчанию xi.

cov

вещественный вектор, коэффициенты корреляции

Mean

вещественное число или вектор, всреднее значение x и, если указано, y

Описание

corr(x,y,…) вычисляет cov(m)=sum_{k=1}^{n-m} (x(k)-mean(x))(y(m+k)-mean(y)) / n, где m = 0, …, nlag-1.

Обратите внимание, что, если последовательности x и y разные, то corr(x,y,…) отличается от corr(y,x,…).

Короткие последовательности

[cov,Mean]=corr(x,[y],nlags) возвращает первые nlags коэффициентов корреляции и Mean = mean(x) (среднее арифметическое [x,y], если y является аргументом. Последовательность x (соответственно y) предполагается вещественной, и x и y одинакового размера n.

Длинные последовательности

[cov,Mean]=corr('fft',xmacro,[ymacro],n,sect), где xmacro - это:

  • функция типа [xx]=xmacro(sect,istart), которая возвращает вектор xx размером nsect, содержащий часть последовательности с индексами от istart до istart+sect-1;

  • fortran-подпрограмма или C-процедура, которая выполняет то же вычисление (для примера см. исходный код dgetx).

n - общий размер последовательности. sect - размер секций последовательности. sect должен быть кратным степени 2. cov имеет размерность sect. Вычисление производится с помощью БПФ.

Обновляющий метод
[w,xu]=corr('updt',x1,[y1],w0)
[w,xu]=corr('updt',x2,[y2],w,xu)
 ...
wk=corr('updt',xk,[yk],w,xu)

С этим синтаксисом вычисление обновляется при каждом вызове corr.

w0 = 0*ones(1,2*nlags);
nlags = power of 2.

x1,x2,... - это части x такие, что x=[x1,x2,...] и размеры xi кратны степени 2. Чтобы получить nlags коэффициентов, должно быть выполенно заключительное БПФ c=fft(w,1)/n; cov=c(1nlags) (n - это размер x (y)). Предупреждение: этот синтаксис предполагает, что xmean = ymean = 0.

Примеры

x=%pi/10:%pi/10:102.4*%pi;
rand('seed');rand('normal');
y=[.8*sin(x)+.8*sin(2*x)+rand(x);.8*sin(x)+.8*sin(1.99*x)+rand(x)];
c=[];
for j=1:2,for k=1:2,c=[c;corr(y(k,:),y(j,:),64)];end;end;
c=matrix(c,2,128);cov=[];
for j=1:64,cov=[cov;c(:,(j-1)*2+1:2*j)];end;
rand('unif')

rand('normal');x=rand(1,256);y=-x;
deff('[z]=xx(inc,is)','z=x(is:is+inc-1)');
deff('[z]=yy(inc,is)','z=y(is:is+inc-1)');
[c,mxy]=corr(x,y,32);
x=x-mxy(1)*ones(x);y=y-mxy(2)*ones(y);  //центровка
c1=corr(x,y,32);c2=corr(x,32);
norm(c1+c2,1)
[c3,m3]=corr('fft',xx,yy,256,32);
norm(c1-c3,1)
[c4,m4]=corr('fft',xx,256,32);
norm(m3,1),norm(m4,1)
norm(c3-c1,1),norm(c4-c2,1)
x1=x(1:128);x2=x(129:256);
y1=y(1:128);y2=y(129:256);
w0=0*ones(1:64);   //32 coeffs
[w1,xu]=corr('u',x1,y1,w0);w2=corr('u',x2,y2,w1,xu);
zz=real(fft(w2,1))/256;c5=zz(1:32);
norm(c5-c1,1)
[w1,xu]=corr('u',x1,w0);w2=corr('u',x2,w1,xu);
zz=real(fft(w2,1))/256;c6=zz(1:32);
norm(c6-c2,1)
rand('unif')

// тест для внешней программы Fortran или C
//
deff('[y]=xmacro(sec,ist)','y=sin(ist:(ist+sec-1))');
x=xmacro(100,1);
[cc1,mm1]=corr(x,2^3);
[cc,mm]=corr('fft',xmacro,100,2^3);
[cc2,mm2]=corr('fft','corexx',100,2^3);
[max(abs(cc-cc1)),max(abs(mm-mm1)),max(abs(cc-cc2)),max(abs(mm-mm2))]

deff('[y]=ymacro(sec,ist)','y=cos(ist:(ist+sec-1))');
y=ymacro(100,1);
[cc1,mm1]=corr(x,y,2^3);
[cc,mm]=corr('fft',xmacro,ymacro,100,2^3);
[cc2,mm2]=corr('fft','corexx','corexy',100,2^3);
[max(abs(cc-cc1)),max(abs(mm-mm1)),max(abs(cc-cc2)),max(abs(mm-mm2))]

Смотрите также

  • xcorr — Computes discrete auto or cross correlation
  • xcov — Computes discrete auto or cross covariance
  • correl — correlation of two variables
  • cov — Sample covariance matrix
  • covar — covariance of two variables
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 25 08:54:56 CET 2020