
ciclo for matlab
Publicado por Harold (6 intervenciones) el 14/11/2016 05:47:42
Hola a todos, tengo este codigo wn matlab el cual funciona correctamente, lee un audio y lo desompone en 8 niveles, que es el valor que se le dio a N (N=8), ahora estoy haciendo una interfaz grafica con guide pero no se como hacer para que cambiando el valor de N por ejemplo a 3, me calcule 3 niveles de descomoposicion, es decir A1,A2,A3 y D1,D2,D3, y graficarlo, he intentado haciendolo con un ciclo for pero no he podido lograrlo. Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
clear
clc
[audio, Fs]=audioread('audio.wav');
Lt=length(audio);
audio=audio/max(abs(audio));
%t=0:1/Fs:Lt/Fs-1/Fs;
%plot(t,audio); title ('Se?al en el dominio del tiempo');
plot(audio); axis([1 Lt min(audio) max(audio)])
title ('Se?al de voz vs. muestras');
%% An?lisis en el dominio de la frecuencia
NFFT = 2^nextpow2(Lt);
espectro = fft(audio,NFFT)/Lt;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure;
plot(f,2*abs(espectro(1:NFFT/2+1)));
title('Espectro unilateral del audio')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
%% Descomposici?n de la se?al multi-nivel
N= 8; % niveles de descomposici?n
[C,L] = wavedec(audio,N,'sym5'); % C coeficientes wavelet, L longitud
%% Extracci?n coeficientes de aproximaci?n
A1 = appcoef(C,L,'sym5',1); % A1 corresponde a los coeficientes de aproximacion del primer nivel
A2 = appcoef(C,L,'sym5',2); % A2 corresponde a los coeficientes de aproximacion del segundo nivel
A3 = appcoef(C,L,'sym5',3); % A2 corresponde a los coeficientes de aproximacion del tercer nivel
A4 = appcoef(C,L,'sym5',4); % A2 corresponde a los coeficientes de aproximacion del cuarto nivel
A5 = appcoef(C,L,'sym5',5); % A1 corresponde a los coeficientes de aproximacion del quinto nivel
A6 = appcoef(C,L,'sym5',6); % A2 corresponde a los coeficientes de aproximacion del sexto nivel
A7 = appcoef(C,L,'sym5',7); % A2 corresponde a los coeficientes de aproximacion del s?ptimo nivel
A8 = appcoef(C,L,'sym5',8); % A2 corresponde a los coeficientes de aproximacion del octavo nivel
figure;
subplot(2,4,1); plot (A1); axis([1 length(A1) min(A1) max(A1)]); title ('Coeficientes A1');
subplot(2,4,2); plot (A2); axis([1 length(A2) min(A2) max(A2)]); title ('Coeficientes A2');
subplot(2,4,3); plot (A3); axis([1 length(A3) min(A3) max(A3)]); title ('Coeficientes A3');
subplot(2,4,4); plot (A4); axis([1 length(A4) min(A4) max(A4)]); title ('Coeficientes A4');
subplot(2,4,5); plot (A5); axis([1 length(A5) min(A5) max(A5)]); title ('Coeficientes A5');
subplot(2,4,6); plot (A6); axis([1 length(A6) min(A6) max(A6)]); title ('Coeficientes A6');
subplot(2,4,7); plot (A7); axis([1 length(A7) min(A7) max(A7)]); title ('Coeficientes A7');
subplot(2,4,8); plot (A8); axis([1 length(A8) min(A8) max(A8)]); title ('Coeficientes A8');
%% Extraccion coeficientes de detalle
D1 = detcoef(C,L,1); % D1 corresponde a los coeficientes de detalle del primer nivel
D2 = detcoef(C,L,2); % D2 corresponde a los coeficientes de detalle del segundo nivel
D3 = detcoef(C,L,3); % D3 corresponde a los coeficientes de detalle del tercer nivel
D4 = detcoef(C,L,4); % D4 corresponde a los coeficientes de detalle del cuarto nivel
D5 = detcoef(C,L,5); % D5 corresponde a los coeficientes de detalle del quinto nivel
D6 = detcoef(C,L,6); % D6 corresponde a los coeficientes de detalle del sexto nivel
D7 = detcoef(C,L,7); % D7 corresponde a los coeficientes de detalle del s?ptimo nivel
D8 = detcoef(C,L,8); % D8 corresponde a los coeficientes de detalle del octavo nivel
figure;
subplot(2,4,1); plot (D1); axis([1 length(D1) min(D1) max(D1)]); title ('Coeficientes D1');
subplot(2,4,2); plot (D2); axis([1 length(D2) min(D2) max(D2)]); title ('Coeficientes D2');
subplot(2,4,3); plot (D3); axis([1 length(D3) min(D3) max(D3)]); title ('Coeficientes D3');
subplot(2,4,4); plot (D4); axis([1 length(D4) min(D4) max(D4)]); title ('Coeficientes D4');
subplot(2,4,5); plot (D5); axis([1 length(D5) min(D5) max(D5)]); title ('Coeficientes D5');
subplot(2,4,6); plot (D6); axis([1 length(D6) min(D6) max(D6)]); title ('Coeficientes D6');
subplot(2,4,7); plot (D7); axis([1 length(D7) min(D7) max(D7)]); title ('Coeficientes D7');
subplot(2,4,8); plot (D8); axis([1 length(D8) min(D8) max(D8)]); title ('Coeficientes D8');
%% Informacion sobre base wavelets
% waveinfo
% waveletfamilies
magnitud=abs(espectro);
magnitud2=magnitud.*magnitud;
E1=sum(magnitud2);
deltaf=f(2);
frecuencia=500;
tdatos=frecuencia/deltaf;
E2=sum(magnitud(1:tdatos));
porcentaje=E2*100/E1;
Valora esta pregunta


0