【发布时间】:2012-02-01 18:43:37
【问题描述】:
我是 MATLAB 新手,我正在尝试使用 MATLAB 构建语音变形系统。
所以我想知道如何使用 MATLAB 将信号归一化为零均值和单位方差?
【问题讨论】:
我是 MATLAB 新手,我正在尝试使用 MATLAB 构建语音变形系统。
所以我想知道如何使用 MATLAB 将信号归一化为零均值和单位方差?
【问题讨论】:
如果您的信号在矩阵 X 中,则通过移除平均值使其为零均值:
X=X-mean(X(:));
单位方差除以标准差:
X=X/std(X(:));
【讨论】:
std,即:std(x-mu),但它应该是:std(x),对吧?
如果你有统计工具箱,那么你可以计算
Z = zscore(S);
【讨论】:
您可以确定信号的平均值,然后从所有条目中减去该值。这会给你一个零均值的结果。
要获得单位方差,请确定信号的标准差,然后将所有条目除以该值。
【讨论】:
看起来您实际上是在研究计算数据的 z-score 或 标准分,这是通过以下公式计算的:z = (x-mean (x))/标准(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
【讨论】: