簡體   English   中英

GNU Octave:即使將“ shape”定義為函數參數,也未定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM