2014-05-12 3 views
1

매 x (1 ~ 5) 다른 값을 갖는 5 개의 부 도표를 그립니다. 코드를 5 번 반복하지 않고 (매번 x를 바꿀 때마다) for 루프를 사용하여 각 서브 그림을 그려 보는 것이 더 멋지다고 생각했습니다. 그러나 코드를 작동시킬 수는 없습니다.반복 및 하위 그림

5 개의 플롯을 수동으로 플롯하면 몇 가지 이유 때문에 축 레이블이 Y 축에만 나타납니다. 그것들을 모든 축에 표시하려면 어떻게합니까?

% constants 
a=30; 
b=0.5; 

% parameters 
x=1:1:5 ; 
e1 = 0:10:10000; 
e2 = 0:10:10000; 

[e1,e2]=meshgrid(e1,e2); 

% plots 

t(x)=(a.^(6.*x)/factorial(6.*x))*... 
    (exp(-b*x.*e2)); 

u(x)=((a.^(a-(6.*x)))/factorial(a-(6.*x)))*... 
    exp(-b*(a-(6.*x)).*e1); 

p(x)=t(x)./(t(x)+u(x)); 

%FIGURES: 

for i=length(x) 

    figure 
    subplot(3,2,i); 
    mesh(e1,e2,p(i)); 
    title('X=i'); 
    axis([1 10000 1 1000 10^-300 1]) 
    xlabel('e1'); 
    ylabel('e2'); 
    zlabel('p'); 

end 
+1

답변이 다소 어려우므로 여기서는 매우 잘못합니다. 원래 이것이 이것이 MATLAB 질문이라고 가정했지만, uf t (x), u (x) 및 p (x)의 정의는 Matlab과 관련이 없으므로 더 이상 확실하지 않습니다. 루프 된 플로팅이 문제라면, 제일 먼저해야 할 일은 '그림'을 for 루프 바깥에 놓는 것입니다. –

답변

0

좋습니다. 코드에 몇 가지 버그가 있습니다.

% constants 
a=30; 
b=0.5; 

% parameters 
x=1:1:5 ; 
e1 = 0:10:10000; 
e2 = 0:10:10000; 

[e1,e2]=meshgrid(e1,e2); 

% plots 

[email protected](x)(a.^(6.*x)./factorial(6.*x))*... 
    (exp(-b*x.*e2)); 

[email protected](x)((a.^(a-(6.*x)))/factorial(a-(6.*x)))*... 
    exp(-b*(a-(6.*x)).*e1); 

[email protected](x)t(x)./(t(x)+u(x)); 

%FIGURES: 
figure 
for i=x 


    subplot(3,2,i); 
    mesh(e1,e2,p(i)); 
    title(['X=',int2str(i)]); 
    axis([1 10000 1 1000 10^-300 1]) 
    xlabel('e1'); 
    ylabel('e2'); 
    zlabel('p'); 

end 

이슈가 있었다 : 여기에 작동 하나입니다

  1. 익명 함수 [email protected](x)([function here])에 의해 정의되지 t(x)=[function here] 당신은 for 루프가 필요하므로 이상 X의 모든 요소를 ​​반복 할 필요가
  2. be for i=x
  3. 문은 for 루프 외부에 있어야합니다. 그렇지 않으면 모든 반복마다 새로운 그림이 생깁니다.
  4. title()은 변수 문자열을 구문 분석하지 않습니다.

희망을 얻었습니다.

+0

고마워,이게 내가 정확히 목표로 한거야. (Matlab을 처음 사용하므로 기본 오류에 사과드립니다.) – user3589557