J’ai réalisé un programme sous Matlab mais le problème est qu'il y trop de répétition .j'ai essayé de le simplifier tout ce qui est en rouge en utilisant des incrémentations ou boucles mais je n’y arrive pas. Peut on le simplifier ?
Voici le programme:
Code:
clear all
close all
clc
Fe = 44100;
Fc = Fe/2;
t = (1/Fe:1/Fe:60);
y = wavread('02 Piste 2 - 02 Piste 2.wav');
z = wavread('WN.wav');
signal = y(:,1);
bruit = z(:,2);
ly = length(y);
lz = length(z);
%%%%% Nombres de canaux
C = 3;
%%%%% Début Fréquence électrique
F = 707;
%%%%% Détermination de la raison
q = (4000/F)^(1/C);
%%%%% Détermination des bornes de fréquences des différent canaux
%%%%% pour le Signal acoustique entier
F1 = [F F*q];
F2 = F1*q;
F3 = F2*q;
%%%%% Détermination des bornes de fréquences des différent canaux pour
%%%%% le Bruit Blanc
Fb1 = F1+[75 -75];
Fb2 = F2+[75 -75];
Fb3 = F3+[75 -75];
%%%%% Détermination du Wn pour les filtres passe bande
wn_y1 = F1/Fc;
wn_y2 = F2/Fc;
wn_y3 = F3/Fc;
wn_z1 = Fb1/Fc;
wn_z2 = Fb2/Fc;
wn_z3 = Fb3/Fc;
% wn =[0.0321 0.0571];
% wn1=[0.0355 0.0537];
%%%%% Filtre pour le signal
[b1,a1] = butter(3,wn_y1,'bandpass');
[b2,a2] = butter(3,wn_y2,'bandpass');
[b3,a3] = butter(3,wn_y3,'bandpass');
%%%%% Filtre pour le bruit
[b4,a4] = butter(3,wn_z1,'bandpass');
[b5,a5] = butter(3,wn_z2,'bandpass');
[b6,a6] = butter(3,wn_z3,'bandpass');
%%%%% Signaux Filtré
%%%%% 1ère étape
y1 = filter(b1,a1,signal);
y2 = filter(b2,a2,signal);
y3 = filter(b3,a3,signal);
%%%%% 2ième étape
z1 = filter(b4,a4,bruit);
z2 = filter(b5,a5,bruit);
z3 = filter(b6,a6,bruit);
%%%%% 3ième étape Filtrage à 50hz
[b,a] = butter(3,0.0023,'low');
yf1= filter(b,a,abs(y1));
yf2= filter(b,a,abs(y2));
yf3= filter(b,a,abs(y3));
%%%%% Normalisation du bruit blanc filtrée
zf1 = z1/max(z1);
zf2 = z2/max(z2);
zf3 = z3/max(z3);
Je voudrais donc savoir si vous pouvez m'aider afin de parvenir à un meilleur résultat.
Cordialement.
Merci d'utiliser les balises mises à ta disposition, et en particulier celle-ci (code)
yoda1234.
Dernière modification par yoda1234 ; 17/04/2007 à 17h02.
Motif: Mise en place de la balise "code"
Salut
Je trouve pas ta routine Matlab moche dans le cas d'un travail sur trois bandes et je trouverais inutile et encombrant de chercher à virer les répétitions par des boucles...
Par contre, si tu avais a travailler sur plus de bandes, tu aurais meilleur temps de remplacer tes données du genre y1,y2,y3 par un vecteur à trois composantes y...
Dans ce cas là, tu pourrais condenser tes trois lignes en une seule en travaillant sur des vecteurs...