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

3
如何在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 

响应为

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

如果我将DNA_Microarray称为函数,则此方法可行,但问题要求其仍保持为脚本。


1
你试过输入函数/脚本的名称吗? - Ander Biguri
这是我写的代码: function mean_DNA_Microarray = DNA_MicroarrayC = M - ones(5,25)*mean(M(:,25)) end 其中,DNA_Microarray 是我正尝试调用的脚本名称。 - Raymond
编辑您的问题并附上代码,如果没有换行符,它就没有意义。 - Ander Biguri
但是你正在将DNA_microarray用作函数。如果您将其用作函数,则需要它成为一个函数。 - Ander Biguri
1个回答

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

如果你想从其他地方调用所有函数,只需要输入它的名称并传入参数,在这种情况下,函数内部的内容将被称为M。请注意保留HTML标签。
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。


2
C 应该被替换为 mean_DNA_Microarray 吗? - Divakar
@Divakar 是正确的,代码中应该将 C 替换为 mean_DNA_Microarray,否则它将无法工作。为了遵循 Ander Biguri 的建议,我建议您通过 http://www.mathworks.co.uk/academia/student_center/tutorials/ 上的教程进行学习。 - am304
@Divakar 对不起,我刚才重新编写了代码,并忘记改那个。谢谢! - Ander Biguri
@Raymond,请注意,如果您在评论中编写内容,那么很难理解任何内容。请编辑您的原始答案。 - Ander Biguri
@Raymond,那是因为你不应该在评论中编写代码。编辑你的原始问题。点击你第一个原始问题下面的“编辑”。 - Ander Biguri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接