Programme matlab optique
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Programme matlab optique



  1. #1
    invitec18f3dee

    Programme matlab optique


    ------

    Bonjour,

    Je dois faire un programme matlab pour simuler l'éclairement des plusieurs LEDs. J'ai dans un premier temps calculer l'éclairement de chaque led. J'ai ainsi pu tracer l'intensité de celle-ci en fonction de l'angle d'ouverture.

    Maintenant je dois simuler l'éclairement pour un certain nombre de led et ainsi obtenir une figure avec des niveaux de couleurs en fonction de l'intensité.

    J'ai un problème avec l'implémentation de mon code, je n'arrive pas à obtenir ce que je désire.

    Mon code est le suivant:

    Code:
    	%% Calcul intensité des LEDS
    
    clc
    clear all
    close all
    
    % Constantes:
    
    Vl = 0.08; % V(lambda)
    h = 3; %Distance en cm
    
    % Caractéristiques de la led:
    
    Angle=[-90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90]; % Angle d'ouverture de la led (100°)
    I=[0 0 0.1 0.2 0.48 0.65 0.78 0.89 0.94 1 0.94 0.89 0.78 0.65 0.48 0.2 0.1 0 0]; % Intensité visuelle de la led en candela (cd)
    Ls = 40; % Largeur spectrale en nm
     
    %Calculs Eclairement: 
    
    Iv=(I/(680*Vl))*10^6; % Intensité visuelle (microW/Sr)
    
    E1= (Iv.*cosd(Angle))./h.^2; % Eclairement (microW/cm^2)
    LED1= E1/Ls; % Eclairement (microW/cm^2 nm)
    
    % E2= (Iv.*cosd(Angle))./h.^2; % Eclairement (microW/cm^2)
    % LED2= E2/Ls; % Eclairement (microW/cm^2 nm)
    
    VMI®®®nLED1 = min(LED1)
    VmaxLED1 = max(LED1)
    
    % Affichage Eclairement en fonction de l'angle:
    
    figure
    
    plot(Angle,LED1,'b')
    title('Eclairement de la led')
    xlabel('Angle (°)')
    ylabel('Eclairement (microW/cm^2 nm)')
    grid
    legend('Distance: 3 cm')
    
    
    %% Intensité Led plaque
    clc
    
    s0 = [0];
    
    teta = 50; %en degré
    R = h * tand(teta)
    
    x1 = [R];
    y1 = [0];
    
    x2 = [R/2];
    y2 = [sqrt((R/2).^2 + R.^2)];
    
    x3 = [R/2];
    y3 = [- sqrt((R/2).^2 + R.^2)];
    
    x4 = [- R/2];
    y4 = [- sqrt((R/2).^2 + R.^2)];
    
    x5 = [- R/2];
    y5 = [sqrt((R/2).^2 + R.^2)];
    
    x6 = [- R];
    y6 = [0];
    
    %X = [s0,s0;x1,y1];
    %r = pdist(X,'euclidean') %Rayon 
    %d = sqrt(r.^2 + D1.^2)
    %teta = atand(r/D1)
    
    VThetaDeg = 0:1:360;
    VTheta = VThetaDeg * pi / 180;
    
    
    X0 = s0 + R * cos(VTheta);
    Y0 = s0 + R * sin(VTheta);
     
    X1 = x1 + R * cos(VTheta);
    Y1 = y1 + R * sin(VTheta);
    
    X2 = x2 + R * cos(VTheta);
    Y2 = y2 + R * sin(VTheta);
    
    X3 = x3 + R * cos(VTheta);
    Y3 = y3 + R * sin(VTheta);
    
    X4 = x4 + R * cos(VTheta);
    Y4 = y4 + R * sin(VTheta);
    
    X5 = x5 + R * cos(VTheta);
    Y5 = y5 + R * sin(VTheta);
    
    X6 = x6 + R * cos(VTheta);
    Y6 = y6 + R * sin(VTheta);
    
    figure
    grid
    hold on
    plot(s0,s0,'*')
    plot(x1,y1,'*')
    plot(x2,y2,'*')
    plot(x3,y3,'*')
    plot(x4,y4,'*')
    plot(x5,y5,'*')
    plot(x6,y6,'*')
    
    plot(X0, Y0)
    plot(X1, Y1)
    plot(X2, Y2)
    plot(X3, Y3)
    plot(X4, Y4)
    plot(X5, Y5)
    plot(X6, Y6)
    %axis([-5 10 -5 5])
    hold off
    %%
    clc
    
    angle_Led = [-90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90;
        0 0 0.1 0.2 0.48 0.65 0.78 0.89 0.94 1 0.94 0.89 0.78 0.65 0.48 0.2 0.1 0 0]; 
    
    
    xi = angle_Led(1,: );
    yi = angle_Led(2,: );
    Ang = -90:1:90;
    
    ycubic = interp1(xi, yi, Ang,'linear');
    figure
    plot(xi,yi,'*', Ang,ycubic,'--');
    grid
    
    Max = zeros(301,120);
    Min = zeros(301,120);
    Sim = zeros(301,120);
    
    r = sqrt((Iv*100)/(680*Vl*Ls*VmaxLED1))*1000;
    
    Nled = 27;
    
    %dH = (8)/length(LED1);
    
    % x = -4:dH:4-dH;
    % y = -4:dH:4-dH;
    % 
    % 
    % H = sqrt((x.^2)+(y.^2));
    % theta = acosd(x./H);
    % [X,Y] = meshgrid(x,y);
    %LEDt = zeros(length(x),length(y));
    
    for G = 1:75
        for i= 1:30
            Dist_led = 20+(i*1)-1;
            if Dist_led == 120
                Nled = 24;
            elseif Dist_led == 133
                Nled = 20;
            elseif Dist_led == 150
                Nled = 15;
            elseif Dist_led == 200
                Nled = 12;
            elseif Dist_led == 300
                Nled = 6;
            elseif Dist_led == 400
                Nled = 4;
            end
            
        posX0 = Dist_led*[0,0,0,0,0,0.9,0.9,0.9,0.9,1.8,1.8,1.8,1.8,1.8,2.7,2.7,2.7,2.7,3.6,3.6,3.6,3.6,3.6,4.5,4.5,4.5,4.5];
        posY0 = Dist_led*[0,1,2,3,4,0.5,1.5,2.5,3.5,0,1,2,3,4,0.5,1.5,2.5,3.5,0,1,2,3,4,0.5,1.5,2.5,3.5];
    
            Max(i,G) = 0;
            Min(i,G) = 0;
            Sim(i,G) = 0;
            
            for j = 1:400+1
                for k = 1:600+1
                    I(j,k) = 0;
                    for led = 1:Nled
                    
                        S = acosd(1/sqrt((j-posX0(led)).^2 + (k-posY0(led)).^2))+90
                        I(j,k) = I(j,k) + ycubic(1,S) * Iv*10^2 /((j-posX0(led)).^2 + (k-posY0(led)).^2) * 680*Vl*Ls / sqrt((j-posX0(led)).^2 + (k-posY0(led)).^2)+r.^2 
                    end
                end
            end
            Max(i,G) = Max(i,G) + max(max(I(1:145,1:185)));
            Min(i,G) = Min(i,G) + min(min(I(1:145,1:185)));
            Sim(i,G) = Sim(i,G) + (Min(i,G)/Max(i,G))*100;
        end
     end
    
    B = max(max(Max));
    Plan_Gray = I/B;
    figure
    imshow(Plan_Gray);
    axis ([0 600 0 400]);
    % Image en 3D
    figure
    meshc(I);
    axis ([0 600 0 400 0 50]);
    colorbar
    En vous remerciant d'avance pour votre aide

    -----
    Images attachées Images attachées  
    Dernière modification par Antoane ; 13/03/2016 à 13h25. Motif: Ajout alises [code]

  2. #2
    Antoane
    Responsable technique

    Re : Programme matlab optique

    Bonjour et bienvenue sur Futura !

    Je ne vois pas quelle est ta question
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    invitec18f3dee

    Re : Programme matlab optique

    Bonjour

    Pardon, j'ai oublié de signaler ça: J'ai un message d'erreur quand je lance mon programme, mais je ne sais pas d'où cela vient.
    Le message est le suivant: Subscripted assignment dimension mismatch.
    Je suis un peu perdue aussi sur la structure générale de mon programme. Je ne vois pas comment obtenir ce que je veux.

    Merci

  4. #4
    Antoane
    Responsable technique

    Re : Programme matlab optique

    Bonjour,
    Citation Envoyé par clem5995 Voir le message
    Pardon, j'ai oublié de signaler ça: J'ai un message d'erreur quand je lance mon programme, mais je ne sais pas d'où cela vient.
    Le message est le suivant: Subscripted assignment dimension mismatch.
    Erreur qui signifie que tu fait une affectation du genre :
    truc = chien;
    ou truc a une certaine taille (c'est par exemple un élément de matrice, i.e. un scalaire) et que chien en a une autre (c'est par exemple une matrice).
    Pour débugguer (http://fr.mathworks.com/help/matlab/....mathworks.com) ton programme, le mieux est de l'enregistrer en tant que fonction, puis de le lancer pour voir où (à quelle ligne) se trouve l'erreur. Tu peux ensuite placer un breakpoint pour exécuter le programme jusqu'à la ligne posant problème. Tu peux ensuite trouver aisément pourquoi ça bloque.

    Ici, ca bloqie sur la ligne :
    Code:
                        
    I(j,k) = I(j,k) + ycubic(1,S) * Iv*10^2 /((j-posX0(led)).^2 + (k-posY0(led)).^2) * 680*Vl*Ls / sqrt((j-posX0(led)).^2 + (k-posY0(led)).^2)+r.^2
    car I(j,k) est un scalaire, alors que + ycubic(1,S) * Iv*10^2 /((j-posX0(led)).^2 + (k-posY0(led)).^2) * 680*Vl*Ls / sqrt((j-posX0(led)).^2 + (k-posY0(led)).^2) est un vecteur de longueur 19, car Iv est un vecteur de longueur 19.
    Dernière modification par Antoane ; 13/03/2016 à 17h33.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Programme E-HOG matlab
    Par invite19a934ea dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 29/10/2014, 13h46
  2. Matlab programme
    Par invite6ea8c28e dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 05/03/2014, 14h51
  3. programme matlab
    Par said76 dans le forum Technologies
    Réponses: 0
    Dernier message: 22/02/2011, 19h39
  4. programme matlab
    Par inviteb3568de1 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 24/05/2009, 13h52
  5. programme matlab
    Par invite33b8bd7f dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 18/08/2007, 17h13