2014-01-28 519 views
0

我想在幾個函數中使用數據集文件名「AUDUSD」。對於我來說,只需將文件名「AUDUSD」更改爲更通用的名稱,如「FX」,然後在other_matlab函數中使用縮寫「FX」即可。 double()。但matlab不知道名稱「FX」(應分配給數據集「AUDUSD」)在下面的代碼...任何建議?matlab如何使用文本字符串作爲函數的輸入參數

CODE:

FX = 'AUDUSD'; 
load(FX);  %OKAY !!! FX works as input to open file AUDUSD! 

Svars = {'S_bid','S_offer'}; 
Fvars = {'F_bid','F_offer'}; 

vS = double(FX,Svars);   % FX does NOT work as input for the file AUDUSD 

回答

1

沒有雙()函數接受多個電池陣列作爲參數(這就是當你調用雙(FX,Svars)會發生什麼)。

如果您調用double(FX),則FX中的每個字符將被解釋爲其ASCII值,然後轉換爲double。所以你得到[65.0 85.0 68.0 85.0 83.0 68.0]。如果你提供了一個向量,這是double()函數的行爲:向量中的每個單獨值被強制轉換爲double。

您必須提供更多關於您想要完成的更多細節以提供更多建議。

+0

打我給它15秒。 +1。爲了完整性,您可以添加一個鏈接,其中解釋了double()的行爲嗎? – kkuilla

0

我有一個不同的例子,也許你會更好地理解我的觀點。我想要處理的關鍵工作如下: 我有一個包含「數據集」文件的文件夾。我想循環瀏覽這個文件夾,輸入任何數據集文件,提取每個數據集文件的第2列和第3列,以及只用數據集文件的第2列和第3列構建一個新的數據集文件。 一個問題是數據集文件的大小不一樣,所以我試圖將數據集文件翻譯成雙矩陣,然後將所有雙矩陣合併爲一個雙矩陣。

這裏我的代碼:

folder_string = 'Diss_Data/Raw'; 
    FolderContent = dir(folder_string); 
    No_ds = numel(FolderContent); 

    for i = 1:No_ds 

     if isdir(FolderContent(i).name)==0 

      file_string = FolderContent(i).name; 
      file_path = strcat(folder_string,'/',file_string) 
      dataset_filename = file_string(1:6); 

      load(file_path);   %loads the suggested datasetfile; OKAY 
      M = double(dataset_filename);% returns an ASCII code number; WRONG; should  transfer the datasetfile into a matrix M 
      vS = M(:,2:3); 
      %... to be continued 

     end 

    end 
相關問題