Je suis en train d'écrire un fichier .m pour extraire des caractéristiques d'énergie à partir d'une piste audio, mais il me semble avoir de la difficulté dans sa mise en œuvre:Aide requise avec l'audio dans Matlab
% Formula for calculating RMS
[f, fs, nb] = wavread('Three.wav');
frameWidth=441; %10ms
numSamples=length(x);
numFrames=(numSamples/1);
energy(frame)=0;
for frame=1:numFrames,
startSample=(frame-1)*frameWidth+1;
endSample=startSample+frameWidth-1;
% Calculate frame energy
for i=startSample:endSample
energy(frame)=energy(frame)+x(i)^2;
end
end
je lance ce fichier dans MATLAB et obtenez l'erreur suivante:
??? Attempted to access x(2); index out of bounds because numel(x)=1. Error in ==> myrms at 12 energy(frame)=energy(frame)+x(i)^2;
Toute aide serait grandement appréciée.
Brillant. Juste remarqué l'erreur que j'ai faite dans le message initial aussi, je ne devrais pas avoir utilisé f du tout, je ne l'ai même pas écrit n'importe où sur le morceau de papier où j'écrivais le code initial. Que c'est embarrassant. Merci pour l'aide de toute façon, c'est très apprécié. – Velocity
Je ne sais pas si vous obtiendrez une notification que j'ai répondu à cela mais ici va quand même. Existe-t-il un moyen d'appliquer une étiquette ou une étiquette à chaque image créée? Même si c'est aussi basique que "Frame 1" "Frame 2" etc. Je veux effectuer quelques fonctions moi-même pour trouver les zones de la chanson que je veux extraire, mais je ne sais pas comment rappeler les images une fois que j'ai ces données. Par exemple, si j'effectue des fonctions de corrélation automatique puis de détection de crête, je veux ensuite mapper cette image à sa position spécifique dans le morceau pour pouvoir ensuite extraire la vignette. – Velocity
@Velocity: Une façon de faire est de sauvegarder les valeurs de 'startSample' et' endSample' que vous calculez dans votre boucle. J'ai mis à jour le code dans ma réponse pour montrer comment faire cela. – gnovice