相関係数を指定してベ​クトルを作成する方法​はありますか?

既知の相関係数 rho と ベクトル X から新たなベクトル Y を得る方法を教えてください。

 채택된 답변

MathWorks Support Team
MathWorks Support Team 2012년 11월 29일

0 개 추천

直接的な関数はございません。下記のように実現することができます。
function b = wantcorrelation(a,rho)
%WANTCORRELATION Get a vector having specified correlation with another
if abs(rho)==1
b = sign(rho) * a;
return
end
% Standardize a
a = a(:);
n = numel(a);
a = (a - mean(a)) ./ std(a);
% Get standardized noise
z = randn(size(a));
z = (z - mean(z)) ./ std(z);
% Remove any random correlation and re-standardize
r = (a'*z) / (n-1);
z = z - r*a;
z = (z - mean(z)) ./ std(z);
% Create new variable with desired correlation
lambda = rho / sqrt(1-rho^2);
b = z + lambda*a;

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Deep Learning Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!