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 :

Tracer courbe 3d


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur, Réseaux et télécommunications
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur, Réseaux et télécommunications
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 14
    Points
    14
    Par défaut Tracer courbe 3d
    Salut tout le monde,
    J'ai un programme à réaliser mais j'arrive pas à le faire.

    Je dois faire introduire des intervales (latitude minimale et maximale ainsi longitude minimale et maximale.. et ainsi de suite)

    Après je vais faire un calcul qui me permet de calculer l'affaiblissement à partir de l'équation PL)

    Je veux tracer une courbe en 3D en fonction des latitudes & longitudes & pl
    qui me permettent de visualiser le résultat d'affaiblissement sur chaque coordonnées.

    Merci de votre aide.

    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
    latmin = input ('Entrez la lattitude minimale: ');
    latmax = input ('Entrez la latitude maximale: ');
    LATT= latmin:.3:latmax;
     
    lonmin = input ('Entrez la longitude minimale: ');
    lonmax = input ('Entrez la longitude maximale: ');
    LONN= lonmin:.3:lonmax;
     
    lat = input ('Entrez la lattitude de l''antenne emetrice: ');
    lon = input ('Entrez la longitude de l''antenne emetrice: ');
     
     f = input ('Entrez la fréquence porteuse en Mhz: ');
     pe = input ('Entrez la puissance à l''emission en Db: ');
     ge = input ('Entrez le gain à l''emission en Db: ');
     gr = input ('Entrez le gain à la réception en Db: ');
     
        [a,c,dlat,dlon]=haversine11(lat,lon,LATT,LONN); 
        pl = 32.4 + 20*log10(c) + 20*log10(f);
        Pr = pe + ge - pl + gr;
        r = [LATT LONN c Pr pl];
     
    [LATT,LONN,pl] = meshgrid(latmin:.3:latmax, lonmin:.3:lonmax, pl); 
    Z = peaks(pl);
    surf(LATT,LONN,Z)

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Ta question n'est pas très précise.
    Quel est le problème exactement ?

    Sans le code de la fonction haversine11, nous ne pouvons pas t'aider.
    Ou du moins sans en savoir plus sur ces arguments de sortie.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur, Réseaux et télécommunications
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur, Réseaux et télécommunications
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Dut Voir le message
    Ta question n'est pas très précise.
    Quel est le problème exactement ?

    Sans le code de la fonction haversine11, nous ne pouvons pas t'aider.
    Ou du moins sans en savoir plus sur ces arguments de sortie.
    Voici le code de Haversine, Il ne fait que convertir les distances exprimées en latitude et longitudes en distances par KM pour faciliter le calcul.

    Quant à la demande, je veux faire du calcul d'affaiblissement et le plotter en 3D selon les valeurs (latitude, longitude, pl)


    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
    function [km nmi mi] = haversine(loc1, loc2
    % If two inputs are given, display error
    if ~isequal(nargin, 2)
        error('User must supply two location inputs')
     
    % If two inputs are given, handle data
    else
     
        locs = {loc1 loc2};     % Combine inputs to make checking easier
     
        % Cycle through to check both inputs
        for i = 1:length(locs)
     
            % Check inputs and convert to decimal if needed
            if ischar(locs{i})
     
                % Parse lat and long info from current input
                temp = regexp(locs{i}, ',', 'split');
                lat = temp{1}; lon = temp{2};
                clear temp
                locs{i} = [];           % Remove string to make room for array
     
                % Obtain degrees, minutes, seconds, and hemisphere
                temp = regexp(lat, '(\d+)\D+(\d+)\D+(\d+)(\w?)', 'tokens');
                temp = temp{1};
     
                % Calculate latitude in decimal degrees
                locs{i}(1) = str2double(temp{1}) + str2double(temp{2})/60 + ...
                    str2double(temp{3})/3600;
     
                % Make sure hemisphere was given
                if isempty(temp{4})
                    error('No hemisphere given')
     
                % If latitude is south, make decimal negative
                elseif strcmpi(temp{4}, 'S')
                    locs{i}(1) = -locs{i}(1);
                end
     
                clear temp
     
                % Obtain degrees, minutes, seconds, and hemisphere
                temp = regexp(lon, '(\d+)\D+(\d+)\D+(\d+)(\w?)', 'tokens');
                temp = temp{1};
     
                % Calculate longitude in decimal degrees
                locs{i}(2) = str2double(temp{1}) + str2double(temp{2})/60 + ...
                    str2double(temp{3})/3600;
     
                % Make sure hemisphere was given
                if isempty(temp{4})
                    error('No hemisphere given')
     
                % If longitude is west, make decimal negative
                elseif strcmpi(temp{4}, 'W')
                    locs{i}(2) = -locs{i}(2);
                end
     
                clear temp lat lon
            end
        end
    end
     
    % Check that both cells are a 2-valued array
    if any(cellfun(@(x) ~isequal(length(x),2), locs))
        error('Incorrect number of input coordinates')
    end
     
    % Convert all decimal degrees to radians
    locs = cellfun(@deg2rad, locs, 'UniformOutput', 0);
     
     
    %% Begin calculation
     
    R = 6371;                                   % Earth's radius in km
    delta_lat = locs{2}(1) - locs{1}(1);        % difference in latitude
    delta_lon = locs{2}(2) - locs{1}(2);        % difference in longitude
    a = sin(delta_lat/2)^2 + cos(locs{1}(1)) * cos(locs{2}(1)) * ...
        sin(delta_lon/2)^2;
    c = 2 * atan2(sqrt(a), sqrt(1-a));
    km = R * c;                                 % distance in km
     
     
    %% Convert result to nautical miles and miles
     
    nmi = km * 0.539956803;                     % nautical miles
    mi = km * 0.621371192;                      % miles

Discussions similaires

  1. Tracer courbe avec MSChart
    Par xavier1936 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 08/08/2007, 08h41
  2. Tracer courbe en 2D voir en 3D
    Par bonjour69 dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 05/04/2007, 18h29
  3. Tracer courbe avec coordonnées de points
    Par ddsjm dans le forum MATLAB
    Réponses: 6
    Dernier message: 10/12/2006, 21h02
  4. Tracer courbe method post, get ou ???
    Par cedre22 dans le forum Langage
    Réponses: 33
    Dernier message: 22/02/2006, 15h24
  5. Tracer courbes
    Par jackdans dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/06/2005, 03h17

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