2014-01-28 480 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 
相关问题