Bonjour,
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:
Je voudrais donc savoir si vous pouvez m'aider afin de parvenir à un meilleur résultat.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);
Cordialement.
Merci d'utiliser les balises mises à ta disposition, et en particulier celle-ci (code)
yoda1234.
-----