Estoy creando un archivo para leer en un cierto número de archivos .wav, cada uno de ellos corresponde a una nota musical. Estoy realizando una FFT en cada uno de ellos y tramando todos en la misma figura. Sin embargo, tengo un problema para hacer que la leyenda se imprima correctamente, está separando los nombres que quiero usar en letras individuales en lugar de usarlos como una cadena. Mi código es el siguiente:Leyenda de Matlab después del ciclo FOR
clear all
mydir = 'Note Values/';
wavFiles = dir([mydir '*.wav']);
length(wavFiles)
legendText = [];
figure(1);
hold on;
for i = 1:length(wavFiles)
wavFiles(i).name
[y, fs] = wavread([mydir wavFiles(i).name]);
sound(y, fs)
currentSample = y(round(length(y)/2)-2048:round(length(y)/2)+2047);
FFT = abs(fft(currentSample));
Power = FFT.*conj(FFT)/length(FFT);
if (mod(i, 2) == 1)
h = plot(Power, 'Color', 'red');
else
h = plot(Power, 'Color', 'blue');
end
sri = wavFiles(i).name;
sri
legendText = [legendText, sri];
end
length(legendText)
legendText(1)
legend(legendText(:));
hold off;
La variable Sri siempre es una cadena completa, pero LegendText (1) sólo se imprime una vez de A3.wav. Sé que probablemente sea algo realmente obvio, pero no puedo encontrarlo. Gracias
La salida en mi gráfico aparece como esto:
Como nota al margen, parece que debe trazar el eje y en una escala de registro en lugar de lineal. Use la función 'semilogía' o simplemente:' set (gca, 'YScale', 'log') '... – Amro