如何在 Matlab 中创建一个矩阵,每个条目都是双变量函数的输出
How to create a matrix in Matlab with every entry being the output of a bivariate function
我想创建一个 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 * 余弦(1*x + 0*y) + 25 * 余弦(1*x + 1*y) + 3 * 余弦(1*x + 2*y)
+ 8 * 余弦(1*x + 3*y)
+ 3 * 余弦(2*x + 0*y) + 25 * 余弦(2*x + 1*y) + 3 * 余弦(2*x + 2*y)
+ 8 * 余弦(2*x + 3*y)
+ 3 * 余弦(3*x + 0*y) + 25 * 余弦(3*x + 1*y) + 3 * 余弦(3*x + 2*y)
- 90 * cos(3*x + 3*y)
Matlab用得不多,也有一段时间了。我试过将 f(x,y) 变成 @f(x,y) 函数;使用 .* 运算符;对 x 和 y 等进行啮合。所有这些都没有成功...
不确定,您已经完全尝试过,但是使用 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
我想创建一个 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 * 余弦(1*x + 0*y) + 25 * 余弦(1*x + 1*y) + 3 * 余弦(1*x + 2*y) + 8 * 余弦(1*x + 3*y) + 3 * 余弦(2*x + 0*y) + 25 * 余弦(2*x + 1*y) + 3 * 余弦(2*x + 2*y) + 8 * 余弦(2*x + 3*y) + 3 * 余弦(3*x + 0*y) + 25 * 余弦(3*x + 1*y) + 3 * 余弦(3*x + 2*y) - 90 * cos(3*x + 3*y)
Matlab用得不多,也有一段时间了。我试过将 f(x,y) 变成 @f(x,y) 函数;使用 .* 运算符;对 x 和 y 等进行啮合。所有这些都没有成功...
不确定,您已经完全尝试过,但是使用 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