[英]GNU Octave: 'shape' is undefined even when it's defined as a function parameter
我編寫了一個簡單的阻力模擬程序,只包含一個阻力公式和一些系數的預設。 我似乎對未定義的變量之一有疑問。 我發現了另一個與我同樣遇到問題的問題,但是沒有一個答案對我有用。 這是我的代碼:
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;
開始1;
在定義您的第一個功能之前。 這樣,Octave會將其識別為腳本文件而不是功能文件。
如果代碼的第一行是函數定義,則該文件將被視為函數文件,並且在命令行上使用其名稱將執行該第一個函數,而不是最后的腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.