2014-11-05 22 views
1

如何在Matlab/Octave中將函數調用到函數中並進行vica調用?在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功能將工作,但問題要求它繼續作爲一個腳本。

+1

?你嘗試過輸入函數/腳本的名字嗎? – 2014-11-05 12:43:47

+0

這裏是我寫的代碼:function mean_DNA_Microarray = DNA_Microarray C = M-ones(5,25)* mean(M(:25)) end其中DNA_Microarray是我正在嘗試的腳本的名稱致電 – Raymond 2014-11-05 12:51:24

+0

用代碼編輯你的問題,沒有換行符它沒有意義 – 2014-11-05 12:52:16

回答

3

首先,你沒有正確定義你的函數,因爲函數不知道什麼是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 Calc_mean_DNA_Microarray輸入M

+2

不應將'C'替換爲'mean_DNA_Microarray'? – Divakar 2014-11-05 13:01:37

+0

@Divakar是正確的,'C'應該被代碼中的'mean_DNA_Microarray'替代,否則它將不起作用。按照Ander Biguri的建議,我會建議通過http://www.mathworks.co.uk/academia/student_center/tutorials/上的教程。 – am304 2014-11-05 13:07:46

+0

@Divakar我的壞,我只是在這裏重新編寫代碼,忘記改變它。謝謝! – 2014-11-05 14:07:10