我对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矩阵,我不知道如何制作这样一个矩阵而不输入所有内容(这将是一项可怕的任务)。
有人可以帮我理解如何制作这样的情节吗?非常感谢你!
答案 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
!)