function - 来自另一个 m 文件的 Octave 调用函数

标签 function call octave

从另一个 m 文件调用函数 nraizes(a) 的 m 文件。

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 时显示),以便第一个语句是实际的函数定义。

关于function - 来自另一个 m 文件的 Octave 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33724904/

相关文章:

php - 当 php 的 mysql_query 返回 0 时,它会产生错误。怎么修?

javascript - Console.log 和函数返回 (Javascript)

c++ - 编译器如何处理仿函数中重载的函数调用运算符?

matlab - 在 Octave/Matlab 的 arrayfun 中使用 if 子句

c++ - 将数组传递给函数 C++

Android源码函数奇特的名字

python - 从另一个带有参数的 python 脚本调用 python 脚本不起作用

powershell - Powershell:具有转义参数(-%)的调用运算符(&)无法与非静态参数一起使用

matlab - 如何使用 invfreqs 将低频拟合到 Octave 音阶?

matlab - playaudio()函数在 Octave 中不起作用