我想创建一个4 x 4矩阵,每个条目代表f(x,y),其中x和y都取值0、1、2和3。所以第一个条目将是f(0,0),一直到f(3,3)。
函数f(x,y)为:
3 * cos(0 * x + 0 * y)+ 2 * cos(0 * x + 1 * y)+ 3 * cos(0 * x + 2 * y)+ 8 * cos(0 * x + 3 * y) + 3 * cos(1 * x + 0 * y)+ 25 * cos(1 * x + 1 * y)+ 3 * cos(1 * x + 2 * y) + 8 * cos(1 * x + 3 * y) + 3 * cos(2 * x + 0 * y)+ 25 * cos(2 * x + 1 * y)+ 3 * cos(2 * x + 2 * y) + 8 * cos(2 * x + 3 * y) + 3 * cos(3 * x + 0 * y)+ 25 * cos(3 * x + 1 * y)+ 3 * cos(3 * x + 2 * y) -90 * cos(3 * x + 3 * y)
我没用过Matlab,已经有一段时间了。我试过将f(x,y)转换为@f(x,y)函数;使用。*运算符;对x和y等进行网格划分。所有这些都没有成功...
答案 0 :(得分:0)
不确定,您尝试了什么,但是使用meshgrid
是正确的主意。
% Function defintion (abbreviated)
f = @(x, y) 3 * cos(0*x + 0*y) + 2 * cos(0*x + 1*y) + 3 * cos(0*x + 2*y)
% Set up x and y values.
x = 0:3
y = 0:3
% Generate grid.
[X, Y] = meshgrid(x, y);
% Rseult matrix.
res = f(X, Y)
生成的输出:
f =
@(x, y) 3 * cos (0 * x + 0 * y) + 2 * cos (0 * x + 1 * y) + 3 * cos (0 * x + 2 * y)
x =
0 1 2 3
y =
0 1 2 3
res =
8.00000 8.00000 8.00000 8.00000
2.83216 2.83216 2.83216 2.83216
0.20678 0.20678 0.20678 0.20678
3.90053 3.90053 3.90053 3.90053