#matlab #vectorization
#matlab #векторизация
Вопрос:
Я хочу создать матрицу 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 и т.д. Все это безуспешно…
Ответ №1:
Не уверен, что именно вы пробовали, но использование 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
Комментарии:
1. ‘f = @(x, y) 3 * cos (0 * x 0 * y) 25 * cos (0 * x 1 * y) 3 * cos (0 * x 2 * y) ошибка: ‘x’ не определено возле столбца 13 строки 2′
2. Получаете ли вы подобную ошибку при попытке запустить этот пример из документации MATLAB (первый краткий пример)?