Как исправить: ошибка "тела анонимных функций должны быть единичными выражениями" в Octave - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь создать функцию в октаве, где вы задаете октаве функцию 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 над заголовком функции

...