GNU Octave:'shape' 未定义,即使它被定义为函数参数
GNU Octave: 'shape' is undefined even when it's defined as a function parameter
我写了一个简单的阻力模拟程序,只是结合了阻力公式和一些系数预设。我似乎对其中一个未定义的变量有疑问。我发现了另一个与我有同样问题的问题,但 none 的答案对我有用。这是我的代码:
function drag = drag_calc(area_var, shape, density, velocity)
shape_area = 0;
drag_C = 0;
fprintf("%s\n", shape);
if (strcmp(shape, "sphere"))
shape_area = 4 * pi * area_var^2;
drag_C = 0.47;
elseif (strcmp(shape, "sphere"))
shape_area = area_var(1) * area_var(2);
drag_C = 1.05;
else
shape_area = 1;
drag_C = 1;
endif
drag = calc_drag(drag_C, shape_area, density, velocity);
endfunction
function drag_Force = calc_drag(drag_C, shape_area, density, velocity)
drag_Force = (1/2) * drag_C * shape_area * density * velocity;
endfunction
velocity = 0:0.5:100;
drag = drag_calc(2, "sphere", 1.8, velocity);
plot(velocity, drag);
我知道要从另一个脚本调用函数,我需要说明我正在引用的文件的名称,尽管它仍然说相同的变量未定义。从命令行调用函数似乎也不起作用
这可能与您在文件中定义函数的方式有关。
如果这是一个脚本文件,在定义您的第一个函数之前,在顶部使用 1;
启动它。这样 Octave 就会将其识别为脚本文件而不是函数文件。
如果第一行代码是函数定义,则该文件将被视为函数文件,在命令行中使用它的名称将执行第一个函数,而不是最后的脚本。
我写了一个简单的阻力模拟程序,只是结合了阻力公式和一些系数预设。我似乎对其中一个未定义的变量有疑问。我发现了另一个与我有同样问题的问题,但 none 的答案对我有用。这是我的代码:
function drag = drag_calc(area_var, shape, density, velocity)
shape_area = 0;
drag_C = 0;
fprintf("%s\n", shape);
if (strcmp(shape, "sphere"))
shape_area = 4 * pi * area_var^2;
drag_C = 0.47;
elseif (strcmp(shape, "sphere"))
shape_area = area_var(1) * area_var(2);
drag_C = 1.05;
else
shape_area = 1;
drag_C = 1;
endif
drag = calc_drag(drag_C, shape_area, density, velocity);
endfunction
function drag_Force = calc_drag(drag_C, shape_area, density, velocity)
drag_Force = (1/2) * drag_C * shape_area * density * velocity;
endfunction
velocity = 0:0.5:100;
drag = drag_calc(2, "sphere", 1.8, velocity);
plot(velocity, drag);
我知道要从另一个脚本调用函数,我需要说明我正在引用的文件的名称,尽管它仍然说相同的变量未定义。从命令行调用函数似乎也不起作用
这可能与您在文件中定义函数的方式有关。
如果这是一个脚本文件,在定义您的第一个函数之前,在顶部使用 1;
启动它。这样 Octave 就会将其识别为脚本文件而不是函数文件。
如果第一行代码是函数定义,则该文件将被视为函数文件,在命令行中使用它的名称将执行第一个函数,而不是最后的脚本。