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

gee*_*eti 42 matlab signal-processing

我是MATLAB的新手,我正在尝试使用MATLAB构建一个语音变形系统.

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

Oli*_*Oli 77

如果您的信号在矩阵中X,则通过删除平均值将其设为零均值:

X=X-mean(X(:));
Run Code Online (Sandbox Code Playgroud)

和单位方差除以标准差:

X=X/std(X(:));
Run Code Online (Sandbox Code Playgroud)

  • \ forall标量a,std(x)== std(x + a) (16认同)
  • 一句话/问题@Oli,在你的代码中,你实际上是在计算对齐/零均值数据(x-mu)的`std`,即:`std(x-mu)`,但它应该是: `std(x)`,对吧? (2认同)

小智 13

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

Z = zscore(S);
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以确定信号的平均值,然后从所有条目中减去该值.这将给你一个零均值的结果.

要获得单位方差,请确定信号的标准差,并将所有条目除以该值.


Kav*_*vka 6

看起来您基本上是在研究计算数据的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)
Run Code Online (Sandbox Code Playgroud)