У меня появилась функция трех параметров, которую я хотел построить в матлабе и варьировал значения параметров (по 50 значений каждого параметра) для создания многомерного массива 50х50х50. Сначала я хочу построить его с помощью серфинга, затем с помощью контура 3, но я не знаю, как это сделать. Я хочу увидеть тенденцию этой функции.
как построить многомерный массив в Matlab
Ответы (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