【问题标题】:how to plot multidim array in matlab如何在matlab中绘制multidim数组
【发布时间】:2013-05-14 13:39:28
【问题描述】:

我得到了一个我想在 matlab 中绘制的三个参数的函数,我改变了参数的值(每个参数 50 个值)来创建一个 50x50x50 的多维数组。起初我想用 surf 绘制它,然后用 contourn3 绘制它,但我不知道该怎么做。我想看看这个功能的趋势。

【问题讨论】:

标签: arrays matlab 3d plot surf


【解决方案1】:

如果我理解正确,您有某种功能,例如 value = fun(parmA, parmB, parmC),并且想要可视化 value 如何在 w.r.t. 中发生变化。参数。不幸的是,没有办法在单个图形中一次可视化所有数据。您必须选择其中一个维度来保持不变。

我们可以使用曲面图 surf() 或水平等高线 contour() 来可视化 3D 数据。当我们有 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多