2013-05-14 4 views
0

나는 MATLAB에서 플롯하고자하는 세 가지 매개 변수의 함수를 얻었고 다차원 배열 50x50x50을 만들기위한 매개 변수의 값 (각 매개 변수의 값은 50 개)을 변경했습니다. 처음에는 서핑으로, 그 다음에는 contorn3으로 음모를 꾸미기를 원합니다.하지만 어떻게해야할지 모르겠습니다. 이 기능의 추세를보고 싶습니다.matlab에 multimim 배열 플롯하는 방법

+0

가능한 dup : http://stackoverflow.com/questions/9806190/plot-multidimensional-array-in-matlab – Murkantilism

답변

1

제가 이해한다면 value = fun(parmA, parmB, parmC)과 같은 기능이 있으며 value이 w.r.t를 어떻게 변경하는지 시각화하고 싶습니다. 매개 변수 불행히도 단일 그래픽에서 모든 데이터를 한 번에 시각화 할 수있는 방법은 없습니다. 상수를 유지하려면 치수 중 하나를 선택해야합니다.

표면 플롯 surf() 또는 레벨 윤곽 contour()을 사용하여 3 차원 데이터를 시각화 할 수 있습니다. 이것들은 value = fun(parmA, parmB) 또는 z = fun(x,y)과 같은 것을 가지고있을 때 작동합니다. 따라서 가장 좋은 대안은 치수 중 하나를 단계별로 실행하고 각 값에 대한 새로운 곡면 또는 등고선을 생성하는 것입니다.

짧은 지연을 사용하면 실제로 비디오를 생성 할 수 있습니다. 다음은 간단한 예입니다. 처음부터 끝까지 축을 일정하게 유지하려면 약간의 작업이 필요합니다.

clear all; close all; clc 

% create your parameters 
x = linspace(-50,50,51); 
y = linspace(-100,100,52); 
z = linspace(0,50,50); 

% A function of three variables 
fun = @(x,y,z) sqrt(x^2 + y^2 + z^2); 

% Preallocate 
vaue = zeros(50,50,50); 

% Populate the data matrix 
for i = 1:numel(x) 
    for j = 1:numel(y) 
     for k = 1:numel(z) 
      value(i,j,k) = fun(x(i),y(j),z(k)); 
     end 
    end 
end 

% Generate a new surface or contour plot for each value of "z" 
for k = 1:numel(z) 
    figure(1) 
    %contour(x,y,value(:,:,k)'); 
    surf(x,y,value(:,:,k)'); 
    title(sprintf('z = %f',z(k))); 
    pause(0.1); 
end