簡體   English   中英

Octave從另一個m文件調用函數

[英]Octave calling function from another m file

調用函數的m文件從另一個m文件中nraizes(a)

clear functions;
clc;
x = input('Insert value for a? ') ;
% call to nraizes()
w = nraizes(x)
clear functions;

帶有nraizes()函數的nraizes.m文件:

printf("\n\n");
printf("nraizes por André Castro - UAB 901396");
printf("\n");
printf("Usar na próxima prompt: nraizes(valor numérico)");
printf("\n");

function n = nraizes(a)

% limpar a memoria de todas as vars e funções
clear functions;

clc;

% intervalo para x
x = 0:.1:25;
% ambas as funções h(x) e g(x)
h = @(x) cos(x);
g = @(x) exp(a*x)-1;
% traçar linha na origem das abcissas
or = x;
or(:) = 0;
% gráfico
plot(x, [h(x);g(x);or]);
axis([0, 25, -1, 1])
title("h(x),g(x)");
grid on;
printf("Fim do Script");
printf("\n");

% limpar a memoria de todas as vars e funções
clear functions;

endfunction

它總是拋出以下錯誤:

warning: function 'nraizes' defined within script file '/Users/andrecastro/0_Thawed/1_UAB/1 UCS_INFORMATICA/Computacao Numerica/0 2015-2016_CN/1 Algoritmos_Octave/nraizes.m'
error: invalid use of script /Users/andrecastro/0_Thawed/1_UAB/1 UCS_INFORMATICA/Computacao Numerica/0 2015-2016_CN/1 Algoritmos_Octave/nraizes.m in index expression
error: called from:
error:   /Users/andrecastro/0_Thawed/1_UAB/1 UCS_INFORMATICA/Computacao Numerica/0 2015-2016_CN/1 Algoritmos_Octave/script.m at line 19, column 7

我不明白為什么。 兩個.m文件都在同一個路徑中。

您已在與該函數同名的文件中定義了nraizes 你不應該這樣做,因為現在你同時擁有一個腳本和一個函數,這兩個命名的nraizes讓事情變得混亂。

這是第一個警告意味着:

warning: function 'nraizes' defined within script file '[...]/nraizes.m'

警告該函數在具有相同名稱的腳本上。

你可以這樣做(這只是一個警告)但你不應該這樣做。 如果你想這樣做,你需要首先獲取nraizes腳本,然后才能使用該函數:

nraizes; # source nraizes script
w = nraizes (x); # call nraizes function

這就是你遇到錯誤的原因

error: invalid use of script [...]nraizes.m in index expression

因為你試圖調用一個函數(或索引變量 - 記住函數尚未定義,因此Octave不知道)不存在。

但是, nraizes.m頂部的printf語句表明您實際上只想將其作為函數文件。 在這種情況下,你應該刪除那些printf (用注釋替換它們,並在運行help nraizes時顯示它們),這樣第一個語句就是實際的函數定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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