私はMATLABを初めて使用し、MATLABを使用して音声モーフィングシステムを構築しようとしています。
したがって、MATLABを使用して信号をゼロ平均と単位分散に正規化する方法を知りたいですか?
信号が行列X
にある場合は、平均を削除することでゼロ平均にします。
X=X-mean(X(:));
および標準偏差で割ることによる単位分散:
X=X/std(X(:));
統計ツールボックスがあれば、計算できます
Z = zscore(S);
信号の平均を決定し、すべてのエントリからその値を差し引くことができます。これにより、平均値はゼロになります。
単位分散を取得するには、信号の標準偏差を決定し、すべてのエントリをその値で除算します。
本質的には、データのz-scoreまたはstandard scoreの計算を検討しているようです。これは、次の式で計算されます。z =(x-mean(x) )/ std(x)
これは動作するはずです:
%% Original data (Normal with mean 1 and standard deviation 2)
x = 1 + 2*randn(100,1);
mean(x)
var(x)
std(x)
%% Normalized data with mean 0 and variance 1
z = (x-mean(x))/std(x);
mean(z)
var(z)
std(z)
ゼロによる除算を避けるために!
function x = normalize(x, eps)
% Normalize vector `x` (zero mean, unit variance)
% default values
if (~exist('eps', 'var'))
eps = 1e-6;
end
mu = mean(x(:));
sigma = std(x(:));
if sigma < eps
sigma = 1;
end
x = (x - mu) / sigma;
end