wake-up-neo.net

Wie normiere ich ein Signal auf den Mittelwert und die Abweichung der Einheit?

Ich bin neu bei MATLAB und versuche, ein Sprachveränderungssystem mit MATLAB aufzubauen.

Ich möchte also wissen, wie man ein Signal mit MATLAB auf den Mittelwert und die Einheitsabweichung von Null normiert?

39
geeti

wenn sich Ihr Signal in der Matrix X befindet, setzen Sie es auf Null, indem Sie den Durchschnitt entfernen:

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

und Einheitsabweichung durch Division durch die Standardabweichung:

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

Wenn Sie die Statistik-Toolbox haben, können Sie berechnen

Z = zscore(S);
12
jon

Sie können den Mittelwert des Signals bestimmen und diesen Wert einfach von allen Einträgen abziehen. Das gibt Ihnen ein Mittelwertergebnis von Null.

Um die Einheitsabweichung zu erhalten, bestimmen Sie die Standardabweichung des Signals und teilen Sie alle Einträge durch diesen Wert.

8
user334856

Es scheint, als würden Sie im Wesentlichen nach der Berechnung der z-Bewertung oder der Standard-Bewertung Ihrer Daten suchen, die durch die folgende Formel berechnet wird:

Das sollte funktionieren:

%% 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)
4
Kavka

Division durch Null vermeiden!

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
1
Yas