Подтвердить что ты не робот

Как нормализовать сигнал до нулевого среднего и единичной дисперсии?

Я новичок в MATLAB, и я пытаюсь создать систему морфинга голоса с использованием MATLAB.

Итак, я хотел бы знать, как нормализовать сигнал до нулевого среднего и единичной дисперсии с использованием MATLAB?

4b9b3361

Ответ 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