八度函数调用中未定义的参数(是的,这是一个脚本文件)
Undefined arg in octave function call (YES IT'S A SCRIPT FILE)
回答
eulerballistic(motion, [0;100;0;-9.8;0], 10)
needs to be
eulerballistic(@motion, [0;100;0;-9.8;0], 10)
^
当我将这两个函数复制并粘贴到 cli 中时,出现“错误:v 未定义”
当我发出“运行 proj3b.m”时,同样的问题
我知道脚本文件和函数文件之间的区别。
当我将 proj3b.m 正确地制作成一个函数文件时,我得到了同样的错误。
使用 Octave 6.4.0
proj3b.m
1+1;
function z = motion(t, v)
x2 = 0;
y2 = -9.8;
z = v + [v(3); v(4); x2; y2; 1]*t;
return
endfunction
eulerballistic(motion, [0;100;0;-9.8;0], 10)
eulerballistic.m
function z = eulerballistic(f, z0, deltat)
z = z0;
i = 1;
while z(2,i) > 0
zprime = f(z(5,i), z(:,i))
z(:,i+1) = z(:,i) + deltat*zprime;
i = i + 1;
if i > 100
break;
end
end
z = z(:, 1:end-1);
end
调用点需要在函数名前加上限定符@。
回答
eulerballistic(motion, [0;100;0;-9.8;0], 10)
needs to be
eulerballistic(@motion, [0;100;0;-9.8;0], 10)
^
当我将这两个函数复制并粘贴到 cli 中时,出现“错误:v 未定义” 当我发出“运行 proj3b.m”时,同样的问题 我知道脚本文件和函数文件之间的区别。 当我将 proj3b.m 正确地制作成一个函数文件时,我得到了同样的错误。
使用 Octave 6.4.0
proj3b.m
1+1;
function z = motion(t, v)
x2 = 0;
y2 = -9.8;
z = v + [v(3); v(4); x2; y2; 1]*t;
return
endfunction
eulerballistic(motion, [0;100;0;-9.8;0], 10)
eulerballistic.m
function z = eulerballistic(f, z0, deltat)
z = z0;
i = 1;
while z(2,i) > 0
zprime = f(z(5,i), z(:,i))
z(:,i+1) = z(:,i) + deltat*zprime;
i = i + 1;
if i > 100
break;
end
end
z = z(:, 1:end-1);
end
调用点需要在函数名前加上限定符@。