2013-12-19 135 views
0

我有一個m x n金融時間序列對象(fints)叫data。現在我想通過只保留相交日期(系列標題都是唯一的)將其n系列中的每一個合併爲一個新的提示。
這是我做的:Matlab - 爲什麼不以逗號分隔的列表作爲輸入參數?

headers = fieldnames(data,1);   %get the headers. 
series = strcat('data.', headers); %list of the series to be merged. 
new_fints = merge(series{:},...  %merge the series. 
       'DateSetMethod','Intersection'); 

但是這給了我以下錯誤:未定義功能「合併」類型「字符」的輸入參數。

我的逗號分隔列表有什麼問題?

+0

什麼也沒有。有錯誤消息不抱怨,它告訴你Matlab找不到'merge'函數。 「合併」給你什麼? – sebastian

+0

嗯,你意識到'series = strcat('data。',headers);'給出了一個字符串列表?看起來你真的想要所有領域的價值......?如果是這樣'series = struct2cell(data);'應該可以做你想做的事情。 – sebastian

+1

你錯了。 merge函數實際上是一種方法,它將一系列對象作爲輸入 - 而不是你存儲這些變量的名字。由於MATLAB函數的作用域規則,函數因此無法找到'char'輸入。從參數上的文檔:「要合併的逗號分隔的金融時間序列對象列表。」(http://www.mathworks.de/de/help/finance/merge.html) – sebastian

回答

0

你會想要實際的字段值,例如像這樣:

series = struct2cell(data); 

>> struct2cell(struct('a', 1, 'b', 2, 'c', 3)) 
ans = 
    [1] 
    [2] 
    [3] 

這應該給你的所有字段值單元陣列,並作爲intented你的代碼的其餘部分應工作。

+0

我真的很感謝你的努力來幫助我,但我恐怕''系列= struct2cell(數據);''不是解決方案我的問題。 – bluebox

+0

那麼,這有什麼問題?任何錯誤消息?請注意,這假定'data'的所有字段都包含'financial timeseries'對象 - 如果任何字段包含不同的內容,則這將不起作用 – sebastian

+0

這是從''series = struct2cell(data)返回的內容; if 「data」是3791 x 10 fints: https://www.dropbox.com/s/q49nohqznaiequd/screenshot2.png – bluebox

相關問題