IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Programmation sous MatLab


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut Programmation sous MatLab
    Bonjour à tous.

    svp pourriez-vous m'aider à corriger mon programme.

    ci-joint code et algorithme.

    Cordialement


    le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    % Doctorant : Claude, 
    % Directeur de Thèse : Pr Martin & Pr Patrice 
     
    % Cet algorithme calcul les paramètres PV d'une cellule solaire
     
    % INITIALISATION DES DONNEES EXPERIMENTALES MESUREES
    clear;
    clc;
     
    % Chargement des données expérimentales mesures 
    % Tempereature de la surface du module PV
    % Irradiance solaire 
    donnees=load('extract_T');
    % Courant expérimentales mesures 
    I_mes=0.1:0.5:7;
    % Tension expérimentales mesures 
    V_mes=6:1:20;
     
    % Parametres du fabriquant sur le module PV
    % Nombre de cellule en serie
    Nsc=36;
    % Constante de bolztman
    k=1.38*10^-23; 
    % Irradiance aux conditions STC
    Gref=1000; 
    % Temperature aux onditions STC
    Tref=25+237.15;
    % Charge de l'électron
    q=1.60*10^-19; 
    % Coefficient de tension
    Kv=-0.0865; 
    % Courant de circuit au condition STC
    Iref=4.01; 
    % Nombre de mesures ou donnees expérimentales enregistrees
    Nbre_mesure=length(donnees.T);
     
    % On parcourt toutes les mesures enregistrées (mes ou theo) grace a j
     
    for j=0:Nbre_mesure
     
        % Initialisation des parametres de depart
     
        % Valeur minimale admise
        % Courant de saturation de depart ou valeur minimale admise
        Is(j)=10^-10;
        % Facteur de qualité de depart  ou valeur minimale admise
        n(j)=1.0; 
        % Resistance serie de depart ou valeur minimale admise
        Rs(j)=0.01;
        % Resistance parallele de depart  ou valeur minimale admise
        Rp(j)=0.01; 
     
        % Pas d'encremantation
        % Courant de saturation à chaque incrementation
        delta_Is=0.001;
        % Facteur de qualité à chaque incrementation
        delta_n=0.001;
        % Résistance serie à chaque incrementation
        delta_Rs=10^-9;
        % Résistance parallele à chaque incrementation
        delta_Rp=0.01;
     
        % Valeur maximale admise
        % Courant de saturation max
        Is_max=7;
        % Facteur de qualité max
        n_max=2; 
        % Resistance serie max
        Rs_max=2;
        % Resistance parallele max
        Rp_max=200;
     
     
        % Pour chaque enregistrement calculons Is, n, Rs et Rp en utilisant N_it
        N_it=1;
     
        % On initialise epsilon qui est la difference entre la valeur mesuree et celle theorique obtenue grace a lambert
        epsilon(j)=5;
     
        % Tension thermique de la jonction pn a la temperature T
        Vt(j)=(k*donnees.T(j))/q;
     
        % Calcul du courant photogenere a la temperature T sous une irradiance G
        Iph(j)=((donnees.G(j))/(Gref))*(Iref+Kv*(donnees.T(j)-Tref))
     
     
     
     
     
        while(N_it<=200 && Rs(j)<Rs_max && Is(j)<Is_max && n(j)<n_max && Rp(j)<Rp_max && epsilon(j)>10^-2)  
     
            %expression du courant theorique Ipv_theo a comparer au courant mésuré I_mes
     
     
            Ipv_theo(j)=(((Is(j)+Iph(j))*Rp(j))-V_mes(j))/(Rp(j)+Rs(j))-(((n(j)*Nsc*Vt(j))/Rs(j))*lambertw((Rs(j)*Rp(j)*Is(j))/(n(j)*Nsc*Vt(j)*(Rs(j)+Rp(j)))*exp(((Rs(j)*Rp(j))*((V_mes(j)/Rs(j))+Iph(j)+Is(j)))/((n(j)*Nsc*Vt(j))*(Rs(j)+Rp(j)))))); 
            % On calcul le courant théorique à partir des précedentes  valeurs de Rs, Is et n calculés plus haut
     
            %Ipv_theo(j)=Is(j)+Iph(j)-((n(j)*Nsc*Vt(j))/(Rs(j)))*lambertw(((Rs(j)*Is(j))/(n(j)*Nsc*Vt(j)))*exp((V_mes(j)+Rs(j)*Iph(j)+Rs(j)*Is(j))/(n(j)*Nsc*Vt(j))));  
            % On calcul le courant théorique à partir des précedentes  valeurs de Rs, Is et n calculés plus haut 
     
            %on calcul l'erreur entre I du module mesure experimentalement au I %theorique
            epsilon(j)=abs(I_mes(j)-Ipv_theo(j));  
     
     
            % Incrementation des different parametres du module pour rapprocher %I mesure a I theo
            % on augmente la précedente résistance série de delta_Rs=0.001  
            Rs(j)=Rs(j)+delta_Rs;
            % on augmente le précedente courant de saturation de delta_Rs=10^-9
            Is(j)=Is(j)+delta_Is;
            % on augmente le précedente facteur de qualité delta_Rs=0.001
            n(j)=n(j)+delta_n;  
            % on augmente le précedente facteur de qualité delta_Rs=10
            Rp(j)=Rp(j)+delta_Rp;
            % On incremente le parametre d'une valeur delta constante
            N_it=N_it+1;
        end
     
        %recuperation de la valeur de Iph
        Iph
        %recuperation de la valeur de Is
        Is
        %recuperation de la valeur de n
        n
        %recuperation de la valeur de Rs
        Rs
        %recuperation de la valeur de Rp
        Rp
    end
    Images attachées Images attachées

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut Programmation sous Matlab
    Bonjour
    L’index j doit commencer à 1.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut [Débutant] Programmation sous MatLab
    Bonjour
    J'ai refait le programme en fonction de l'algorithme et voici le code.
    Lors de la compilation un message d'erreur s'affiche.
                  while  N_it = N_it + 1;
                                               |
    Error: The expression to the left of the equals sign is not a valid target for an assignment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    % Doctorant : Claude, 
    % Directeur de Thèse : Pr Martin & Pr  Patrice 
     
    % Cet algorithme calcul les paramètres PV d'une cellule solaire
     
    clear;
    clc;
     
    % Chargement des données expérimentales mesures 
    % Tempereature de la surface du module PV
    % Irradiance solaire
    T=288:5:358; % Température 
    G=100:50:800; % Irradiation 
    I_mes=0.1:0.5:7; % Courant expérimentales mesures 
    V_mes=6:1:20;% Tension expérimentales mesures 
     
     
    % Parametres du fabriquant sur le module PV
    Nsc=36; % Nombre de cellule en serie
    k=1.38*10^-23; % Constante de bolztman
    Gref=1000; % Irradiance aux conditions STC
    Tref=25+237.15; % Temperature aux conditions STC
    q=1.60*10^-19; % Charge de l'électron
    Kv=-0.0865; % Coefficient de tension
    Iref=4.01; % Courant de circuit au condition STC
    Nbre_mesure=length(T); % Nombre de mesures ou donnees expérimentales enregistrees
     
     
    % On parcourt toutes les mesures enregistrées (mes ou theo) grace a j
    %commencer par la première valeur dans le tableau 
    for j=0:Nbre_mesure  
     
        % Initialisation des parametres de depart
        % Valeur minimale admise
        Is(j)=10^-10; % Courant de saturation de depart ou valeur minimale admise
        n(j)=1.0; % Facteur de qualité de depart  ou valeur minimale admise
        Rs(j)=0.01; % Resistance serie de depart ou valeur minimale admise
        Rp(j)=0.01; % Resistance parallele de depart  ou valeur minimale admise
     
     
        % Pas d'encremantation
        delta_Is=10^-9; % Courant de saturation à chaque incrementation
        delta_n=0.001; % Facteur de qualité à chaque incrementation
        delta_Rs=0.001; % Résistance serie à chaque incrementation
        delta_Rp=0.001; % Résistance parallele à chaque incrementation
     
     
        % Valeur maximale admise
        Is_max=10^-6; % Courant de saturation max
        n_max=2; % Facteur de qualité max
        Rs_max=5; % Resistance serie max
        Rp_max=200; % Resistance parallele max
     
     
        for j=j+1
            if j<size(Nbre_mesure);  
                for N_it = 1;% Pour chaque enregistrement calculons Is, n, Rs et Rp en utilisant N_it
                    while  N_it = N_it + 1;
                        %On initialise epsilon qui est la difference entre la valeur mesuree et celle theorique obtenue grace a lambert
                        epsilon(j)=10^-4;
     
                         % Tension thermique de la jonction pn a la temperature T
                         Vt(j)=(k*T(j))/q;
     
                         % Calcul du courant photogenere a la temperature T sous une irradiance G
                         Iph(j)=((G(j))/(Gref))*(Iref+Kv*(T(j)-Tref));
     
                         %tant que nombre d'iterration inférieur à 200 et 
                         while (N_it<=200 && Rs(j)<Rs_max && Is(j)<Is_max && n(j)<n_max && Rp(j)<Rp_max)  
                             if epsilon(j)>10^-8
     
                                 %expression du courant theorique Ipv_theo a comparer au courant mésuré I_mes 
                                 Ipv_theo(j)=(((Is(j)+Iph(j))*Rp(j))-V_mes(j))/(Rp(j)+Rs(j))-(((n(j)*Nsc*Vt(j))/Rs(j))*lambertw((Rs(j)*Rp(j)*Is(j))/(n(j)*Nsc*Vt(j)*(Rs(j)+Rp(j)))*exp(((Rs(j)*Rp(j))*((V_mes(j)/Rs(j))+Iph(j)+Is(j)))/((n(j)*Nsc*Vt(j))*(Rs(j)+Rp(j)))))); 
     
                                 % On calcul le courant théorique à partir des précedentes  valeurs de Rs, Is et n calculés plus haut
     
            %Ipv_theo(j)=Is(j)+Iph(j)-((n(j)*Nsc*Vt(j))/(Rs(j)))*lambertw(((Rs(j)*Is(j))/(n(j)*Nsc*Vt(j)))*exp((V_mes(j)+Rs(j)*Iph(j)+Rs(j)*Is(j))/(n(j)*Nsc*Vt(j))));  
            % On calcul le courant théorique à partir des précedentes  valeurs de Rs, Is et n calculés plus haut 
     
            %on calcul l'erreur entre I du module mesure experimentalement au I %theorique
            epsilon(j)=abs(I_mes(j)-Ipv_theo(j)); 
            return 
     
            % Incrementation des different parametres du module pour rapprocher %I mesure a I theo
            Rs(j)=Rs(j)+delta_Rs; % on augmente la précedente résistance série de delta_Rs=0.001  
            Is(j)=Is(j)+delta_Is; % on augmente le précedente courant de saturation de delta_Rs=10^-9
            n(j)=n(j)+delta_n;  % on augmente le précedente facteur de qualité delta_Rs=0.001
            Rp(j)=Rp(j)+delta_Rp; % on augmente le précedente facteur de qualité delta_Rs=10
            % On incremente le parametre d'une valeur delta constante
     
     
        end
        end
                    end
                end
            end
    end
        Is %recuperation de la valeur de Is
        n %recuperation de la valeur de n
        Rs %recuperation de la valeur de Rs
        Rp %recuperation de la valeur de Rp
     
    end

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,
    Je pense qu’il faut reprendre toutes les boucles.
    j doit commencer à 1
    N_it n’est jamais égal à N_it+1
    Attention à ne pas faire deux fois for j = ... successivement.
    ...

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    En plus des remarques de phryte, et pour en revenir au message d'erreur, il faut bien faire la différence entre l'opérateur d'affection = et l'opérateur de comparaison ==

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut [Débutant] Programmation sous MatLab
    Bonjour,

    Merci Monsieur phryte pour toutes les remarques.

    Pouvez-vous m'aider à refaire toutes les boucles s'il vous plait.

    Cordialement

Discussions similaires

  1. Execution d'un programme sous matlab
    Par Julien0123 dans le forum Simulation
    Réponses: 5
    Dernier message: 27/11/2014, 09h24
  2. Programmation sous MATLAB
    Par math003 dans le forum MATLAB
    Réponses: 8
    Dernier message: 24/04/2013, 17h25
  3. réécrire un programme sous Matlab
    Par the_black_hat dans le forum C++
    Réponses: 1
    Dernier message: 24/05/2012, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo