在 Matlab/Octave 中调用函数和脚本

Ray*_*ond 3 matlab octave

如何在 Matlab/Octave 中调用脚本到函数,反之亦然?

function mean_DNA_Microarray = Calc_mean_DNA_Microarray(M)
   M = DNA_Microarray 
   mean_DNA_Microarray = M - ones(5,25)*mean(M(:,25)) 
end 
Run Code Online (Sandbox Code Playgroud)

回应是

错误:无效调用脚本 C:\Users\Nacho\Documents\Matlab\DNA_Microarray.m 错误:调用自:错误:C:\Users\Nacho\Documents\Matlab\Calc_mean_DNA_Microarray.m 第 3 行,第 3 列

现在,如果我调用DNA_Microarray一个函数,这将起作用,但问题要求它保留为脚本。

And*_*uri 6

首先,您没有正确定义您的函数,因为该函数不知道是什么 M(除非它是全局变量,但我对此表示怀疑)。

在任何编程语言中,您都需要告诉函数它将使用哪些变量。这不是特定于 Matlab 的。在 Matlab 中,您将这样做:

function mean_DNA_Microarray = Calc_mean_DNA_Microarray(M)  % Look! we are telling him what M is!
    mean_DNA_Microarray = M - ones(5,25)*mean(M(:,25)) 
end
Run Code Online (Sandbox Code Playgroud)

然后你想从其他地方调用所有函数,你只需要输入它的名称并传入参数,在这种情况下,函数内部将被调用M

clear;
clc;
% Test code
Mnameoutofthefunction=rand(100,100);
DNAmean = DNA_Microarray(Mnameoutofthefunction); % here we are calling it!
Run Code Online (Sandbox Code Playgroud)

请记住将函数保存为 functionname.m ,在您的情况下为 DNA_Microarray.m ,否则 Matlab 不会知道它是哪个。

但我强烈建议您阅读一本关于 Matlab 或一般编程的书,因为您似乎可以从一些基本介绍中受益。

按照@am304 的建议,您可以在这里找到不错的教程:

http://www.mathworks.co.uk/academia/student_center/tutorials/

编辑 您想要做的是创建一个函数,如下所示:

function mean_DNA_Microarray = Calc_mean_DNA_Microarray(M)  % Look! we are telling him what M is!
    mean_DNA_Microarray = M - ones(5,25)*mean(M(:,25)) 
end
Run Code Online (Sandbox Code Playgroud)

然后,在您的函数 DNA_Microarray 中,使用输入 M 调用 Calc_mean_DNA_Microarray

  • 不应该用`mean_DNA_Microarray`代替`C`吗? (2认同)