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 :

Sous-partie d'un tableau fonction d'un paramètre


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Sous-partie d'un tableau fonction d'un paramètre
    Bonjour,

    J'ai un tableau fonction d'un paramètre (v) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Btotal=@(v) MatR1total(v)*Ptotal(v);
    taille du tableau : (4,4)

    Je cherche à créer une sous-partie de taille (2,2) de ce tableau en prenant les valeurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    souspartie=@(v)        [Btotal(v)(3,1)    Btotal(v)(3,2)
                                  Btotal(v)(4,1)     Btotal(v)(4,2)];
    mais Matlab refuse cette syntaxe.

    L'objectif est ensuite de calculer le déterminant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    determinant = @(v) det (souspartie(v))
    Quelqu'un saurait-il quelle syntaxe adopter ?

    Merci d'avance.

    Charpy

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Je vois quelques solutions frustes:
    * Repasse en matlab 2006^^
    * Utilise une fonction intermédiaire type get=@(M,i,j) M(i,j),
    * ou bien @(M) [M(n,1) ,M(n,2),...] que tu appliques sur la concaténée aux bons endroits

    En terme de perf, tout dépend de ce que tu va en faire.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Bonjour V33D,

    Je dois avouer que je suis pas un expert en programmation Matlab.

    Je n'ai pas compris les solutions que tu as proposées.

    Pourrais-tu m'expliquer plus en détails ?

    Merci d'avance

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut Voila
    Essaye ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    % définis 
    getsub22= @(M) M(3:4,1:2);
    % et utilise
    souspartie=@(v) getsub22(Btotal(v));
    Sinon, est-ce que quelqu'un pourrait m'expliquer pourquoi les syntaxes
    fonction()(1,1) (fonction renvoie une matrice) sont désormais interdites en Matlab alors qu'elles étaient autorisées avant ! Je suspecte les structarray d'être responsables (le changement de syntaxe a eu lieu à la même époque), mais je n'imagine d'instruction qui puisse être ambigüe en maintenant l'ancienne syntaxe.

Discussions similaires

  1. Convertir une sous-partie d'une structure en tableau
    Par bendesarts dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/08/2014, 08h57
  2. Calcul sur une partie d'un tableau défini sous VBA
    Par VBA_LOVER dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2009, 12h27
  3. Réponses: 3
    Dernier message: 07/12/2008, 09h40
  4. passer une partie d'un tableau en paramettre.
    Par monstroplante dans le forum Langage
    Réponses: 13
    Dernier message: 04/11/2005, 01h22
  5. Tester si une String fait partie d'un tableau de String
    Par laloi dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/04/2005, 16h47

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