首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在matlab中绘制多维数组

如何在matlab中绘制多维数组
EN

Stack Overflow用户
提问于 2013-05-14 21:39:28
回答 1查看 124关注 0票数 0

我得到了想要在matlab中绘制的三个参数的函数,并改变了参数值(每个参数50个值),以创建一个50x50x50的多维数组。一开始我想用surf绘制它,然后用contourn3绘制,但我不知道怎么做。我想看看这个函数的发展趋势。

EN

回答 1

Stack Overflow用户

发布于 2013-10-24 08:53:21

如果我没理解错的话,你有像value = fun(parmA, parmB, parmC)这样的函数,并且想要可视化value是如何改变w.r.t的。参数。不幸的是,无法在单个图形中一次可视化所有数据。你必须选择一个维度来保持不变。

我们可以使用曲面图、surf()或等高线contour()来可视化3-D数据。当我们有像value = fun(parmA, parmB)z = fun(x,y)这样的东西时,这些就会起作用。因此,最好的替代方法是逐步执行其中一个尺寸,并为每个值生成新的曲面或等高线图。

使用较短的延迟,您实际上可以生成视频。这里有一个简单的例子。如果你想在整个过程中保持轴不变,可能需要做一些额外的工作。

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16544797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档