Я пытаюсь создать функцию в октаве, где вы задаете октаве функцию f (x, y) в виде строки, изменение X, изменение Y, начальную точку и размер матрицы, Функция создаст матрицу, заполненную значениями f (x, y) в каждой точке матрицы.
Это для приложения, которое отображает трехмерный график, используя матрицу для отображения каждого значения в блок
# funcStr: The function whose Z values are being calculated
# dx: the change in x that each block in the x direction represents
# dy: the change in y that each block in the y direction represents
# startPt: the point (in an array of x, y) that center block represents
# res: the side length (in blocks) of the plane
pkg load symbolic
syms x y
function[zValues] = calculateZValues(funcStr, dx, dy, startPt, res)
zValues = zeros(res);
eqn = @(x, y) inline(funcStr);
startX = startPt{1};
startY = startPt{2};
for yOffset = 1:res
for xOffset = 1:res
xCoord = startX + dx * xOffset;
yCoord = startY + dy * yOffset;
zValues(res * yOffset + xOffset) = double(subs(eqn, @(x, y), {xCoord, yCoord}));
endfor
endfor
endfunction
Я получаю ошибку:
>> calculateZValues("x*y", 1, 1, {0,0}, 10)
parse error near line 20 of file /home/rahul/Documents/3dGraph/graph/calculateZValues.m
anonymous function bodies must be single expressions
>>> zValues(res * yOffset + xOffset) = double(subs(eqn, @(x, y), {xCoord, yCoord}));
Понятия не имею, в чем проблема. Я заменил часть @ (x, y) на {x, y} в строке, на которую ссылается ошибка, но она ничего не говорит или выдает ошибку о том, что функция subs
не объявлена. Я также попытался переместить строки pkg
и syms
над заголовком функции