Bonjour,
je reformule ma question plus clairement avec un bout de code que vous pouvez copier-coller:
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
paraName={'k11','k13','k33'};
paraName2=paraName;
paraName2(length(paraName)+1)={'residual'};
mPara=[1.6 1.5 0.6; 1.4 1.3 0.8 ; 1.2 1.05 0.96 ; 1.1 1.02 0.98; 1 1 1];
mReNorm=[0.1 0.01 0.001 0.0001 0.000001];
 
mParaSize=size(mPara);
mReNormLen=length(mReNorm);
 
 
if (mParaSize(1)~=mReNormLen)
    error('myApp:argChk', 'ERROR interations number must be the same for residual norm and parameters values')   
end
 
%plot
x=1:mReNormLen;
figure;
 
[AX,H1,H2]=plotyy(x,mPara,x,mReNorm,@plot, @semilogy);
set(H1,'marker','*')
set(H2,'LineStyle','--','marker','o')
xlabel('number of iteration');
title('parameters convergence');
set(get(AX(1),'Ylabel'),'String','Parameters') 
set(get(AX(2),'Ylabel'),'String','Residual norm') 
set(AX,'Xtick',1:1:mReNormLen)
set(AX,'XtickLabel',0:1:(mReNormLen-1))
% set(AX(1),'ylim', [0.4 1.6])
% set(AX(2),'ylim', [1e-10 1e0])
% set(AX(1),'Ytick',0.4:0.2:1.6)
% set(AX(1),'YtickLabel',0.4:0.2:1.6)
% set(AX(2),'Ytick',[10^-10 10^-8 10^-6 10^-4 10^-2 10^0])
% set(AX(2),'YtickLabel',[10^-10 10^-8 10^-6 10^-4 10^-2 10^0])
set(H1(1),'marker','*')
set(H1(2),'marker','s')
set(H1(3),'marker','d')
grid on
h=legend(paraName2);
vous voyez les étiquettes de l'axe de droite s'affiche joliment 10^-10 et non 1e-010. Mais les limites et les ytick sont pourries. J'ai donc mis des limites manuellement:
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
paraName={'k11','k13','k33'};
paraName2=paraName;
paraName2(length(paraName)+1)={'residual'};
mPara=[1.6 1.5 0.6; 1.4 1.3 0.8 ; 1.2 1.05 0.96 ; 1.1 1.02 0.98; 1 1 1];
mReNorm=[0.1 0.01 0.001 0.0001 0.000001];
 
mParaSize=size(mPara);
mReNormLen=length(mReNorm);
 
 
if (mParaSize(1)~=mReNormLen)
    error('myApp:argChk', 'ERROR interations number must be the same for residual norm and parameters values')   
end
 
%plot
x=1:mReNormLen;
figure;
 
[AX,H1,H2]=plotyy(x,mPara,x,mReNorm,@plot, @semilogy);
set(H1,'marker','*')
set(H2,'LineStyle','--','marker','o')
xlabel('number of iteration');
title('parameters convergence');
set(get(AX(1),'Ylabel'),'String','Parameters') 
set(get(AX(2),'Ylabel'),'String','Residual norm') 
set(AX,'Xtick',1:1:mReNormLen)
set(AX,'XtickLabel',0:1:(mReNormLen-1))
set(AX(1),'ylim', [0.4 1.6])
set(AX(2),'ylim', [1e-10 1e0])
set(AX(1),'Ytick',0.4:0.2:1.6)
set(AX(1),'YtickLabel',0.4:0.2:1.6)
set(AX(2),'Ytick',[10^-10 10^-8 10^-6 10^-4 10^-2 10^0])
set(AX(2),'YtickLabel',[10^-10 10^-8 10^-6 10^-4 10^-2 10^0])
set(H1(1),'marker','*')
set(H1(2),'marker','s')
set(H1(3),'marker','d')
grid on
h=legend(paraName2);
et là la figure est comme je le veux mais l'affichage de l'axe de droite se fait en 1e-010. comment changer ça? ou comment faire pour qu'il scale correctement les limites?