Bonjour,
J'ai le code suivant :
J'ai un problème dans ma boucle if parce que quand je lance le programme, il s'éxécute mais je n'ai pas le bon résultat... en effet dans idopt et iqopt je n'ai pas de NaN alors que je devrais en avoir vu que j'en ai dans h(k,m). en faite j'ai l'impression que mon résultat ne prend pas en compte ma boucle if. Qu'ai-je fais de mal ?
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 zp = 4; rs = 31.2*10^(-3); ld = 280*10^(-6); lq = 560*10^(-6); psipm = 29*10^(-3); n=0:500:5000; idopt=zeros(size(n)); iqopt=zeros(size(n)); for m=1:length(n); T(m)=m*50; for k=1:length(n); w(k)=zp*n(k)*2*pi/60; [id,iq]=meshgrid([-600:10:0,0:10:600]); E=zeros(size(id)); logical_mat=sqrt(id.^2+iq.^2)<=600; E(logical_mat)=... (w(k)*T(m)*2)./(3*zp*(rs*id(logical_mat).^2+ ... rs*iq(logical_mat).^2+ ... w(k)*(ld-lq)*id(logical_mat).*iq(logical_mat)+ ... w(k)*psipm*iq(logical_mat))); E(~logical_mat)=NaN; F=zeros(size(E)); logical_mat2=E<=1; F(logical_mat2)=E(logical_mat2); F(~logical_mat2)=NaN; G=zeros(size(F)); logical_mat3=F>=0; G(logical_mat3)=F(logical_mat3); G(~logical_mat3)=NaN; A=zeros(size(G)); logical_mat4=id<0; A(logical_mat4)=G(logical_mat4); A(~logical_mat4)=NaN; B=zeros(size(A)); logical_mat5=iq>0; B(logical_mat5)=A(logical_mat5); B(~logical_mat5)=NaN; [H I]=max(B(:)); h(k,m)=H; if h(k,m)== NaN; idopt(k,m)==NaN; iqopt(k,m)==NaN; else idopt(k,m)= id(I); iqopt(k,m)=iq(I); end end end
		
		
        



   


  Répondre avec citation


 
 
 
 

Partager