2010-02-01 68 views
5

也許一個非常簡單的問題,但我已經在Internet上尋找答案的時間了,但我找不到它。矩陣作爲函數的輸出

我已經創建了下面的函數。在另一個m文件中,我想使用矩陣'actual_location'。但是,不可能使用矩陣的單個單元(即actual_location(3,45)或actual_location(1,2))。當我嘗試使用單個單元格時,出現以下錯誤:??? Error using ==> Actual_Location Too many input arguments.

任何人都可以告訴我必須更改哪些內容,以便可以讀取矩陣的單個單元格?

function [actual_location] = Actual_Location(~); 
actual_location=zeros(11,161); 
for b=1:11 
    for t=1:161 
     actual_location(b,t) = (59/50)*(t-2-(b-1)*12)+1; 
     if actual_location(b,t) < 1 
      actual_location(b,t) =1; 
     end  
    end 
    actual_location(1,1) 
end 
+0

你在哪裏/如何使用actual_location? – 2010-02-01 17:27:37

+0

我在其他m文件中使用actual_location進行一些簡單的計算。 (添加和刪除) 我使用下面的代碼在另一個m文件中打開它: 'Actual_Location' – Daan 2010-02-01 17:33:23

回答

1

正如您所定義的,您的函數Actual_Location所寫的矩陣的m文件中的名稱是actual_location。但是,當你調用你的函數時,你可以給你輸出任何你喜歡的名字。我相信,你是這樣的調用它,記住,Matlab是有點區分大小寫:

actual_location = Actual_Location(arguments); 

你只是寫來迷惑自己。使用其他名稱超過actual_location在函數定義的僞參數,並調用該函數返回一個變量,更鮮明的名字,像這樣:

output = Actual_Location(arguments); 

看來,你可能會希望actual_location( 1,1)返回一個數組的元素1,1,而它可能是一個帶有2個輸入參數的函數調用。

+0

對於函數的名稱,matlab不區分大小寫。因此,如果有一個名爲'foobar'的函數,可以稱之爲'fOoBaR'或'FOObAr'等,一旦調用函數稱爲Actual_Location,matlab解釋器將解釋actual_location(.. 。)'作爲對該函數的調用,導致出現錯誤。對於使用'()'進行矩陣索引的M/W蒙羞。 – shabbychef 2010-02-01 18:19:01

+2

Matlab是排序區分大小寫的。它會首先查找完全匹配,然後檢查不完全匹配(現在拋出一個警告,但在將來的版本中出現錯誤)。 此外,矩陣索引的()是一致的,因爲訪問一個矩陣正在調用一個可以被重載的函數(subsref,subsasgn)。 – Jonas 2010-02-01 18:46:53

1

這似乎表明你正在調用Actual_Location函數以多種參數...我正在用適當的縮進重寫你的代碼。

function [actual_location] = Actual_Location() 
    actual_location=zeros(11,161); 
    for b=1:11 
    for t=1:161 
     actual_location(b,t) = (59/50)*(t-2-(b-1)*12)+1; 
     if actual_location(b,t) < 1 
     actual_location(b,t) = 1; 
     end 
    end 
    actual_location(1,1) 
    end