2012-12-16 3 views
1

에서 특정 기능을 플롯 : ... 나는 결과가주기 함수라고 생각어떻게이 기능이 MATLAB

enter image description here 을하고 나는 그것을 그릴 원하는

을 나는 이것을 시도했지만 단 하나 있어요 포인트 :(

x1=-50:0.1:50; 
x2=-50:0.1:50; 
plot(cos(sqrt(power(x1,2)+power(x2,2)))/(power(x1,2)+power(x2,2))); 

내 문제이고 무엇이 올바른 방법인가?
어떤 도움을 주셔서 감사합니다.

답변

2
  1. 이후 두 개의 입력 x1x2이 있습니다. 따라서 plot3 (또는, @EitanT가 지적하거나 3 차원 플로팅 기능을 사용해야 함)을 사용해야합니다.

  2. 당신은 이제 당신이 두 개의 벡터에서 시작하기 때문에 (-50;-50)(-49.9;-49.9)이, ..., (50;50)는, 당신은 아마 모든 조합을 포함 할 쌍을 세우고 있습니다. 따라서, meshgrid 사용 (높은 치수를, 또한 ndgrid가) : 이제, 행렬 연산을 사용 this link을 읽고 당신이 elementwise 작업이 필요하다고 볼 수

    x1=-50:0.1:50; 
    x2=-50:0.1:50; 
    [X1, X2] = meshgrid(x1,x2); 
    
  3. : a.*b 대신 a*b의 등 power(a,b)이 이미 요소 단위 작업 (a.^b과 동일)이면 행렬 등가는 mpower(a,b) 또는 a^b입니다. -

    f = cos(sqrt(power(X1,2)+power(X2,2)))./(power(X1,2)+power(X2,2)+1); 
    plot3(X1,X2,f); 
    
+0

대단히 감사합니다. – zhilevan

4

3 차원 표면으로 그려야합니다. 예를 들어, surf를 사용

[X1, X2] = meshgrid(-5:0.25:5, -5:0.25:5); 
F = cos(sqrt(X1 .^ 2 + X2 .^ 2)) ./ (X1 .^ 2 + X2 .^ 2 + 1); 
surf(X1, X2, F) 

주 두 가지 :

  1. 당신은 분모에서 "+1"을 잊어 버렸습니다.
  2. 더 나은 시각화를 위해 x1 및 x2 좌표의 범위를 줄였습니다. 검은 색 가장자리가 성가신 모양과 줄거리를 복잡하게 보일 경우 (사용자 샤이는 ​​지적)

, 당신은 EdgeColor 속성을 비활성화하여 에지 라인을 제거 할 수 있습니다

surf(X1, X2, F, 'EdgeColor', 'None') 

최종 결과가 보일 것입니다 이 같은 :

enter image description here 차원 플롯을의

+0

가 대단히 – zhilevan

+2

@EitanT 감사 X1과 X2의 해상도에 대한, 당신은 "모든 블랙"표면 방지하기 위해 가장자리 색상을 해제 할 수 있습니다'서핑 (X1, X2, F, 'EdgeColor ','none ')' – Shai

+0

@Shai 좋은 지적! –