Je suis nouveau sur MATLAB et j'essaie de construire un système de morphing vocal utilisant MATLAB.
Je voudrais donc savoir comment normaliser un signal à une moyenne et une variance d'unités nulles à l'aide de MATLAB?
si votre signal est dans la matrice X
, vous le rendez nul en supprimant la moyenne:
X=X-mean(X(:));
et la variance d'unité en divisant par l'écart type:
X=X/std(X(:));
Si vous avez la boîte à outils de statistiques, vous pouvez alors calculer
Z = zscore(S);
Vous pouvez déterminer la moyenne du signal et soustraire cette valeur de toutes les entrées. Cela vous donnera un résultat moyen nul.
Pour obtenir la variance d'unité, déterminez l'écart type du signal et divisez toutes les entrées par cette valeur.
Il semble que vous cherchiez essentiellement à calculer le z-score ou le score standard de vos données, calculé à l'aide de la formule: z = (x-mean (x))/std (x)
Cela devrait fonctionner:
%% 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)
Pour éviter la division par zéro!
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