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