Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Aide Matlab



  1. #1
    Faymany

    Aide Matlab


    ------

    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:

    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"

  2. #2
    bretus

    Re : Aide Matlab

    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...

    ++

Discussions similaires

  1. Aide MatLab
    Par folky dans le forum Mathématiques du supérieur
    Réponses: 14
    Dernier message: 30/11/2008, 15h22
  2. aide matlab
    Par nanou14 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 15/10/2006, 21h44
  3. Aide en MATLAB
    Par hamoudasafira dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 25/05/2006, 22h14
  4. aide matlab
    Par STF dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 29/10/2004, 14h43
  5. aide matlab
    Par toitoine dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 10/10/2004, 10h24
Découvrez nos comparatifs produits sur l'informatique et les technologies.