我对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)]
其中,f
是C
和n
中值的某个函数。我需要这样的矩阵,X
,这样我就可以画出surf(C,n,X)
的曲面图。问题是,在我的实际问题中,我需要一个51x51矩阵,而我不知道如何在不键入所有内容的情况下创建这样一个矩阵(这将是一项可怕的任务)。
有没有人能帮我理解一下怎么画这样的图?非常感谢!
发布于 2014-02-25 00:44:03
X = f(C'*ones(1, 51), ones(51, 1)*n))
发布于 2014-02-25 01:05:14
看一看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
如果f
在非标量输入上按元素操作,那么您可以非常容易地获得X
:
X = f(ii,jj);
如果f
只能接受一对标量,请尝试arrayfun
X = arrayfun(@(x,y)f(x,y),ii,jj);
(或者修改f
!)
https://stackoverflow.com/questions/22002257
复制