如何将信号归一化为零均值和单位方差?

我是MATLAB新手,我正在尝试使用MATLAB构build语音变形系统。

所以我想知道如何使用MATLAB将信号归一化为零均值和单位方差?

如果你的信号在matrixX ,你可以通过去除平均值来使其为零均值:

 X=X-mean(X(:)); 

单位方差除以标准差:

 X=X/std(X(:)); 

如果你有统计工具箱,那么你可以计算

 Z = zscore(S); 

您可以确定信号的平均值,只需从所有条目中减去该值即可。 这会给你一个零均值的结果。

为了获得单位差异,确定信号的标准偏差,并将所有条目除以该值。

看起来你基本上正在考虑计算你的数据的z分数标准分数 ,它是通过公式计算的: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