Как нормализовать сигнал до нулевого среднего и единичной дисперсии?
Я новичок в MATLAB, и я пытаюсь создать систему морфинга голоса с использованием MATLAB.
Итак, я хотел бы знать, как нормализовать сигнал до нулевого среднего и единичной дисперсии с использованием MATLAB?
Ответ 1
если ваш сигнал находится в матрице X, вы делаете его нулевым средним, удаляя среднее значение:
X=X-mean(X(:));
и единичной дисперсии путем деления на стандартное отклонение:
X=X/std(X(:));
Ответ 2
Если у вас есть панель инструментов статистики, вы можете вычислить
Z = zscore(S);
Ответ 3
Вы можете определить среднее значение сигнала и просто вычесть это значение из всех записей. Это даст вам нулевой результат.
Чтобы получить дисперсию единицы измерения, определите стандартное отклонение сигнала и разделите все записи на это значение.
Ответ 4
Похоже, вы в основном изучаете вычисление 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)
Ответ 5
Чтобы избежать деления на ноль!
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