表面图的大矩阵?

时间:2014-02-25 00:37:35

标签: matlab plot

我对MATLAB有些新意,我正在尝试制作一个非常类似于以下示例的大型矩阵:

C=[1,2,3] 
n=[-3,0,3]
X=[f(1,-3),f(1,0),f(1,3);f(2,-3),f(2,0),f(2,3);f(3,-3),f(3,0),f(3,3)]

其中fCn中值的某种功能。我需要这种矩阵X,以便我可以制作surf(C,n,X)的表面图。问题在于,在我真正的问题中,我需要一个51x51矩阵,我不知道如何制作这样一个矩阵而不输入所有内容(这将是一项可怕的任务)。

有人可以帮我理解如何制作这样的情节吗?非常感谢你!

2 个答案:

答案 0 :(得分:0)

X = f(C'*ones(1, 51), ones(51, 1)*n))

答案 1 :(得分:0)

查看ndgrid

>> [ii,jj] = ndgrid(C,n)
ii =
     1     1     1
     2     2     2
     3     3     3
jj =
    -3     0     3
    -3     0     3
    -3     0     3

如果X在非标量输入上按元素操作,则可以非常轻松地获得f

X = f(ii,jj);

如果f只能使用一对标量,请尝试arrayfun

X = arrayfun(@(x,y)f(x,y),ii,jj);

(或修改f!)