как построить многомерный массив в Matlab

У меня появилась функция трех параметров, которую я хотел построить в матлабе и варьировал значения параметров (по 50 значений каждого параметра) для создания многомерного массива 50х50х50. Сначала я хочу построить его с помощью серфинга, затем с помощью контура 3, но я не знаю, как это сделать. Я хочу увидеть тенденцию этой функции.


person Community    schedule 14.05.2013    source источник


Ответы (1)


Если я правильно понимаю, у вас есть какая-то функция, такая как value = fun(parmA, parmB, parmC), и вы хотите визуализировать, как value изменяется относительно. параметры. К сожалению, нет возможности визуализировать все данные сразу на одном графике. Вы должны выбрать одно из измерений, чтобы оно оставалось постоянным.

Мы можем визуализировать трехмерные данные, используя график поверхности, surf(), или контуры уровня contour(). Они работают, когда у нас есть что-то вроде 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
person Michael Darling    schedule 24.10.2013