Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB
MATLAB Forum d'entraide sur MATLAB. Avant de poster : FAQs MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/12/2012, 20h03   #1
nabilfib
Futur Membre du Club
 
Homme
doctorant
Inscription : décembre 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : doctorant
Secteur : Enseignement

Informations forums :
Inscription : décembre 2012
Messages : 25
Points : 17
Points : 17
Par défaut utilisation de find

Bonsoir

j'ai une problème de l'utilisation de find, je cherche les valeur max de la matrice Nu de dimensions 100x16x10 dans notre cas les valeur de Nu max est 1 (100%)
je cherche les coordonne de la valeur par exemple 1 dans une cordonnée (40,12,3) je veux obtenir cette coordonne puisque 40 c'est l’épaisseur E(40)= , 12 c'est le rayon R(12)= et 3 c'est la valeur de indice(3)=
comment je peux utiliser la fonction find ou autre fonction

merci d’avance
nabilfib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 10h05   #2
Dut
Responsable MATLAB & Hardware/PC

 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 15 103
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 15 103
Points : 31 171
Points : 31 171
Tu ne peux pas utiliser find sur un tableau à plus de deux dimensions.

Dans ton cas, il faut faire :

Code :
1
2
idx = find(Nu==1);
[E,R,indice] = ind2sub(size(N), idx);
Si tu ne cherches pas exactement la valeur 1 mais bien la valeur maximale :

Code :
1
2
[~,idx] = max(Nu(:));
[E,R,indice] = ind2sub(size(N), idx);
__________________
Identification de processeur sous MATLAB (3/3) Identification de processeur sous MATLAB (2/3) Mes contributions MATLAB (R2009a - Windows & Linux)

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)
Dut est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/12/2012, 10h57   #3
nabilfib
Futur Membre du Club
 
Homme
doctorant
Inscription : décembre 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : doctorant
Secteur : Enseignement

Informations forums :
Inscription : décembre 2012
Messages : 25
Points : 17
Points : 17
merci Dut pour votre attention
j'ai utiliser le code mais il affiche:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>> [q,x,y] = ind2sub(size(N), idx)

q =

   Empty matrix: 0-by-1


x =

   Empty matrix: 0-by-1


y =

   Empty matrix: 0-by-1
je sais pas !
pour plus details :
N=10 P=16 M=100
Nu(M,P,N)
et indice(N) R(P) et Z(M)
je peux te donne le code
voila le code sans les figures
Code :
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
clear all
close all
clc
%np=1.418;
N=0;
M=0;
P=0;
W0=5.25;
lam=0.6328;
W0ld=2.2;
indice=zeros(10,1);
 indice(1)=1.40;
  indice(2)=1.41;
  indice(3)=1.42;
  indice(4)=1.43;
  indice(5)=1.44;
  indice(6)=1.45;
  indice(7)=1.46;
  indice(8)=1.47;
  indice(9)=1.48;
  indice(10)=1.49;
  R=zeros(16,1);
   R(1)=25;
   R(2)=26;
   R(3)=27;
   R(4)=28;
   R(5)=29;
   R(6)=30;
   R(7)=31;
   R(8)=32;
   R(9)=33;
   R(10)=34;
   R(11)=35;
   R(12)=36;
   R(13)=37;
   R(14)=38;
   R(15)=39;
   R(16)=40;
   Z=zeros(100,1);
   Z(1,1)=20;
  for M=2:1:100
      
       Z((M),1)=Z((M-1),1)+5;
   end
 
 for N=1:1:10 
     for P=1:1:16
         
  % for Z=20:5:150  
      % M=1:1:((150-20)/5); 
    for M=1:1:100
      
       %Z((M+1),1)=Z((M),1)+5;
   %end  
         
       %   R(M,P,N)=R(P);
       
np(N)=indice(N);%np=1.418;
f(M,P,N)=R(P)./((np(N))-1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  CALCULE DE PROPAGATION 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Propagation dans une distance z d'indice n

lamp(N)=lam./np(N);
Zr=pi*W0.^2./lamp(N);
%Z=100;
W1(M,P,N)=(W0.^2*(1+Z(M).^2./Zr.^2)).^0.5;
R1(M,P,N)=Z(M)+Zr.^2/Z(M);


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  Propagation a travers une lentille mince 

W2(M,P,N)=W1(M,P,N);

R2(M,P,N)=1./((1./R1(M,P,N))-(1./f(M,P,N)));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% le nouveau Waist W et la distance de travail 

W01(M,P,N)=W2(M,P,N)./(1+(pi.*W2(M,P,N).^2./(lam.*R2(M,P,N))).^2).^0.5;

Z01(M,P,N)=-R2(M,P,N)./(1+(lam.*R2(M,P,N)./(pi.*W2(M,P,N).^2)).^2).^0.5;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% couplage  lentille et faisceau gaussienne

w0lens(M,P,N)=W01(M,P,N);

Nu(M,P,N)=2.*(w0lens(M,P,N).*W0ld)./(w0lens(M,P,N).^2+W0ld.^2);

Perte(M,P,N)=-10*log(Nu(M,P,N)) ;
       end;
   end;
 end;
je cherche les valeur max de Nu comme tu voie

je pense il est un peux compliquer mais tu peux voyer seulement dans la ligne 88 pour comprendre
le question comment je peux définir la position de la valeur max (1) pour définir les paramètres: l’épaisseur et l'indice et le rayon ?
nabilfib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 20h08   #4
Dut
Responsable MATLAB & Hardware/PC

 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 15 103
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 15 103
Points : 31 171
Points : 31 171
As-tu essayé la solution avec max à la place de find ?
__________________
Identification de processeur sous MATLAB (3/3) Identification de processeur sous MATLAB (2/3) Mes contributions MATLAB (R2009a - Windows & Linux)

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)
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 21h26   #5
nabilfib
Futur Membre du Club
 
Homme
doctorant
Inscription : décembre 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : doctorant
Secteur : Enseignement

Informations forums :
Inscription : décembre 2012
Messages : 25
Points : 17
Points : 17
bonsoir Dut
si j'utilise max(Nu):
Code :
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
max(Nu)

ans(:,:,1) =

  Columns 1 through 11

    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,2) =

  Columns 1 through 11

    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,3) =

  Columns 1 through 11

    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,4) =

  Columns 1 through 11

    0.9996    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,5) =

  Columns 1 through 11

    0.9988    0.9999    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,6) =

  Columns 1 through 11

    0.9976    0.9994    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,7) =

  Columns 1 through 11

    0.9959    0.9985    0.9998    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,8) =

  Columns 1 through 11

    0.9938    0.9972    0.9992    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,9) =

  Columns 1 through 11

    0.9914    0.9955    0.9982    0.9997    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000


ans(:,:,10) =

  Columns 1 through 11

    0.9887    0.9935    0.9968    0.9990    0.9999    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

  Columns 12 through 16

    1.0000    1.0000    1.0000    1.0000    1.0000
il me donne les valeur max de Nu ! c'est bonne nouvelle mais je cherche les cordonnes de ces points dans la matrice Nu comme je vous explique
nabilfib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 07h26   #6
Dut
Responsable MATLAB & Hardware/PC

 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 15 103
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 15 103
Points : 31 171
Points : 31 171
Relis bien ma première réponse, j'utilise la fonction max d'une façon particulière

Je t'invite également à lire ceci : Introduction à la gestion des matrices
__________________
Identification de processeur sous MATLAB (3/3) Identification de processeur sous MATLAB (2/3) Mes contributions MATLAB (R2009a - Windows & Linux)

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)
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 11h01   #7
nabilfib
Futur Membre du Club
 
Homme
doctorant
Inscription : décembre 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : doctorant
Secteur : Enseignement

Informations forums :
Inscription : décembre 2012
Messages : 25
Points : 17
Points : 17
Citation:
Envoyé par Dut Voir le message
Relis bien ma première réponse, j'utilise la fonction max d'une façon particulière

Je t'invite également à lire ceci : Introduction à la gestion des matrices
merci pour tutoriels , je pense j'ai obtenir une solution
je dessine Nu en fonction de l’épaisseur (fixe l'indice et le rayon generalement comme ça ) et je cherche la valeur exacte de l’épaisseur pour Nu max et chaque fois si je cherche une autre lentille avec une autre rayon de courbure et autre indice je dessine la courbe et je cherche la valeur de l’épaisseur.
malgré que je pense il y a un solution avec la boucle for ou if

merci bien Mr Dut pour m'aider
nabilfib est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h32.


 
 
 
 
Partenaires

Hébergement Web