Matlab - ciclo for matlab

 
Vista:
sin imagen de perfil

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

ciclo for matlab

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 27/11/2016 19:43:31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
para leer N.
 
function edit1_Callback(hObject, eventdata, handles)
N=str2double(get(hObject,'String')) ;
handles.N=N;
guidata(hObject, handles);
end
 
 
 
%% Extracci?n coeficientes de aproximaci?n
 for i=1:N
A(:,i) appcoef(C,L,'sym5',i); % A1 corresponde a los coeficientes de aproximacion del primer nivel
 end

Para los demás se hace casi lo mismo.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar