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

标签 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 

响应是

error: invalid call to script C:\Users\Nacho\Documents\Matlab\DNA_Microarray.m error: called from: error: C:\Users\Nacho\Documents\Matlab\Calc_mean_DNA_Microarray.m at line 3, column 3

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

最佳答案

首先,您没有正确定义函数,因为该函数不知道 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

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

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

记住将函数保存为 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

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

关于matlab - 在 Matlab/Octave 中调用函数和脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26757466/

相关文章:

arrays - 为什么加号和一元加号在数组语法中表现得很奇怪?

javascript - 如何在 JavaScript 中实现 MATLAB 的 "eig(A, B)"函数

algorithm - 在 Octave 中重叠二维矩阵

octave - 警告: Matlab-style short-circuit operation performed for operator &

regex - Octave - 使用正则表达式查找字符串中的单词

matlab - 如何在 MATLAB 中针对一列对二维数组进行排序?

matlab - 在 matlab 中使用 find()

c++ - 为 OpenCV 编译 MATLAB 绑定(bind)

python - 与 Matlab 相比,Numpy 加载 csv 太慢了

matlab/ Octave 随机事件ode45