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
Partager