Как создать матрицу в Matlab, где каждая запись является выходом двумерной функции - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу создать матрицу 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 * у) + 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); используя оператор. *; мешать х и у и т. д. Все безуспешно ...

1 Ответ

0 голосов
/ 25 апреля 2019

Не уверен, что вы пробовали в точности, но использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...