2013-12-12 70 views
1

我知道你們許多人會認爲這應該很容易解決。但是,我對MATLAB沒有任何線索。初學者 - 「未定義的函數'ReadIndexndexDailyLogreturn'輸入參數類型'cell'。」 - 錯誤

這裏去我的問題:試圖通過命令

getLogReturnExcel('ALL.xls', {'ALL'}, 37000, 38000) 

出現的細胞類型錯誤這個功能在命令窗口中執行下面的例子時。然而,據我所知,當使用{}時,函數應該抓住{}(這裏是String)中的類型,而不是單元格本身,如果我們要使用(),它會被抓住,所以應該有沒有錯誤?或者,我可能會監督一些更基本的東西嗎?提前感謝您的每一點幫助;你可以告訴我非常需要它。

乾杯, 本

這裏去功能getLogReturnExcel:

function [logreturn, datearray] = getLogReturnExcel(datafilename, ticker, begindate, enddate) 

    [aanumber, aatext] = xlsread(datafilename); 
    aaticker = aatext(:,1); 
    aadate = aanumber(:,2); 
    aaret = zeros(length(aaticker),1); 
    aaret(1,1) = 0; 
    for i = 2:length(aaret) 
     aaret(i,1) = ln(aanumber(i,3))-ln(aanumber(i-1,3)); 
    end  

    aadate = aadate(strcmp(aaticker,ticker)); 
    aaret = aaret(strcmp(aaticker,ticker)); 

    logreturn = aaret(aadate>=begindate & aadate<=enddate); 
    datearray = aadate(aadate>=begindate & aadate<=enddate); 

return 

文件 'ALL.xls' 包含3列,一個用繩子(縮寫爲股票)和兩個數字(我假設雙),一個是Excel格式的日期,另一個是每天的股票。

回答

1

的字符串可通過使用獲得:

ticker{:} 

否則該比較中的行

aadate = aadate(strcmp(aaticker,ticker)); 
aaret = aaret(strcmp(aaticker,ticker)); 

將字符串和單元陣列之間。

這是一些documentation訪問單元陣列的元素。

+0

感謝您的快速回答!不好意思說我有這麼一點線索,我不得不再問一次。我嘗試用'ticker {:}'代替這兩行中的'ticker',但它仍顯示相同的錯誤。我誤解了什麼?此外,我從別人那裏複製了比較線,但我不完全理解它是如何工作的,以及當我將它們等同於'aadate(0/1)'或'aaret'時嘗試訪問什麼'aadate'和'aaret' (0/1)」。我會非常感謝更多的幫助...... – user3097259

相關問題