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

programme matlab



  1. #1
    ka2610

    programme matlab


    ------

    Bonjour a tous,
    Comment écrire un programme matlab pour trouver le réseau reciproque d'un système cubique?

    -----

  2. #2
    Stud-ENSPG

    Re : programme matlab

    Tu pourrais détailler un peu ton probléme stp : quelles données de départ as-tu, connais-tu les equations de passage qui permettent d'acceder au réseau réciproque etc... Analyse un peu plus ton problème et donne nous les résultats de ta réflexion, on sait pas forcément ce que c'est ton histoire de réseau réciproque...

  3. #3
    dirani

    Re : programme matlab

    Bonjour à tous
    J'ai un programme en matlab qui simule la CSMA/CA de Wifi, (en mode event-driven), mais j'arrive pas a voir s'il donne des bons resultas ou non.

    Merci de m'aider svp
    voici le programme
    NB lorsque le DIFS=0 les resultats sont bons, ailleurs c'est la galere


    %Event-driven program
    function CSMA
    clc;
    mu=input('Voulez vous utiliser le programme avec les valeur dentree standarts? oui-> Tapez 1, non->Tapez 2 : ');
    if (mu==2)
    N=input('Tapez le valeur de stations: ');
    Tmax=input('Tapez le valeur de Temps de simulation: ');
    DIFS=input('Tapez le valeur de DIFS: ');
    Tslot=input('Tapez le valeur de Time slot: ');
    Wmin=input('Tapez le valeur de Wmin: ');
    Wmax=input('Tapez le valeur de wmax: ');
    T=input('Tapez le valeur du temps de transmision de packet: ');
    else
    N=3
    Tmax = 500
    DIFS = 2;
    Tslot = 1;
    T=30; %longueur de packet/debit canal
    Wmin = 4; %minimal value of the contention Window
    Wmax = 8;%max value
    end

    W=ones(1,N)*Wmin;
    Etat=zeros(1,N); %0:idle, 1:transmission, 2: collision
    Backoff=floor(Wmin*rand(1,N)); % on tire les backoff initiaux
    Time=0;
    PreviousTime=0; % instant du dernier evénement
    Ntt=0; % Nombre de transmissions
    Nts=0; % Nombre de transmissions réussies
    Nc=0; % Nombre de situations de collision
    Nexteventtime=zeros(1,N); % instant du prochain evénement pour chaque mobile
    Nexteventtype=zeros(1,N); % type du prochain evénement 0:transmission 1:fin de trans.
    Nexteventtime=Time+Tslot*Backo ff; % le prochain evénement de chaque mobile est sa première transmission.
    AllEventtime = Nexteventtime;
    AllStates = Etat;
    AllBackoffs = Backoff;

    while (Time<Tmax)

    PreviousTime=Time; % on enregistre le dernier instant traité
    Time=min(Nexteventtime); % on se place à linstant du prochain événement
    Posi=find(Nexteventtime==Time) ; %on récupère la liste des mobiles concernés
    Nposi=length(Posi); %on récupère leur nombre

    if (Nexteventtype(Posi)==0) % sil y a une ou plusieurs transmissions
    Ntt=Nposi+Ntt;
    % Mise à jour des données de Posi
    Etat(Posi)=1; % les mobiles de Posi passent en etat transmission
    AllStates = [AllStates ; Etat ];
    Posi2=find(Etat==1 | Etat==2); % on cherche les transmissions en cours
    if (length(Posi2)>1) % sil y a déjà des transmissions en cours
    Etat(Posi2)=2; % tout le monde passe en état collision
    AllStates = [AllStates ; Etat ];
    Nc=Nc+1;
    end %if
    Nexteventtype(Posi)=1; % le prochain even. de Posi est une fin de trans.
    Nexteventtime(Posi)=Time+T; % la fin de trans a lieu T plus tard
    AllEventtime = [AllEventtime ; Nexteventtime];
    Backoff(Posi)=0; % le backoff de ceux qui commencent à transmettre =0
    AllBackoffs = [AllBackoffs ; Backoff ];
    Backoff(find(Etat==0))=Backoff (find(Etat==0))-(Time-PreviousTime)/Tslot; % les mobiles idle voient leur backoff décrémenté.
    AllBackoffs = [AllBackoffs ; Backoff ];
    Nexteventtime(find(Etat==0))=T ime+T+DIFS+Backoff(find(Etat== 0))*Tslot;
    AllEventtime = [AllEventtime ; Nexteventtime];
    elseif (Nexteventtype(Posi)==1) %si cest une fin de transmission
    % display('err1');
    % display(Nposi);
    % display(Etat(Posi));
    if (Nposi==1 & Etat(Posi)==1) % fin de transmission réussie
    Nts=Nts+1;
    W(Posi)=Wmin; % on reinitialize la fenêtre de contention
    elseif (Nposi>1 | (Nposi==1 & Etat(Posi)==2)) % fin de collision
    W(Posi)=min(Wmax,2*W(Posi)); % la fenêtre est doublée
    end %if
    Etat(Posi)=0; %les mobiles Posi repassent en idle
    AllStates = [AllStates ; Etat ];
    Backoff(Posi)=floor(W(Posi).*r and(1,Nposi)); % on retire le backoff des mobiles Posi
    AllBackoffs = [AllBackoffs ; Backoff ];
    Nexteventtype(Posi)=0; % le prochain événement est une transmission
    Nexteventtime(Posi)=Time+DIFS+ Backoff(Posi)*Tslot;
    AllEventtime = [AllEventtime ; Nexteventtime];
    else
    disply('err');
    end %if
    end %while
    Nc
    Ntt
    Nts
    Nexteventtime

    disp('Backoff Trace');
    AllBackoffs

    disp('Events');
    AllEventtime

    disp('States');
    AllStates

Discussions similaires

  1. Matlab
    Par Herr_Moncef dans le forum Électronique
    Réponses: 2
    Dernier message: 02/05/2007, 11h04
  2. MatLab
    Par Adsederq dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 04/04/2007, 00h52
  3. programme de simplexe par matlab
    Par mounagassy dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 30/10/2006, 14h19
  4. [MatLab] Sb2Sl => Matlab classique = pb intégration.
    Par Zangdar dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/08/2005, 21h02
  5. Matlab
    Par Beness dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 19/12/2004, 18h13
Découvrez nos comparatifs produits sur l'informatique et les technologies.