2012-03-13 49 views
1

我要访问几个测序文件夹包含变量在MATLAB中的文件目录..?

例子:

[ndata, text, alldata] = xlsread(' D: \ folder \ 1 \ file ') ; 
[ndata, text, alldata] = xlsread(' D: \ folder \ 2 \ file ') ; 
[ndata, text, alldata] = xlsread(' D: \ folder \ 3 \ file ') ; 
[ndata, text, alldata] = xlsread(' D: \ folder \ 4 \ file ') ; 

我能代替1,2,3and 4可变我。怎么可以在目录中写到这里?!

请您需要任何建议!

回答

0

是的,你可以。使用sprintf()命令。

i=1; 
[ndata, text, alldata] = xlsread(sprintf('D:\\folder\\%i\\file',i)) 

为了确保这是正常工作,请将sprintf更改为fprintf,并确保该文件存在。

>> i=1; 
>> fprintf('D:\\folder\\%i\\file',i) 
D:\folder\1\file 
>> ls D:\folder\1\file 
+0

非常感谢您的建议,但不幸的是,当我测试: (sprintf的( 'd:\文件夹\%I \文件',我)作为一个单独的函数的输出是 ANS = d: 警告:请参阅有效的转义序列帮助的sprintf – 2012-03-13 21:21:38

+0

因为它真的有效时,我想: (sprintf的( 'd:\\ \\文件夹%I \\文件',我) 谢谢很多:) – 2012-03-13 21:26:45

+0

@OceanBlue:将sprintf更改为fprintf,并将su通过做一些像ls那样的文件是正确的。转义序列错误(根据错误),所以只需将单个\'s更改为\\ s。如果您想要非常好,请选择其中一个答案,方法是选中旁边的复选标记:-) – PearsonArtPhoto 2012-03-13 21:27:24

2

fullfile命令是指用于此目的:

xlsread(fullfile('D:','folder', sprintf('%d',i) , 'file')); 

fullfile函数负责特定于操作系统的文件分隔的并确保只有一个文件分离器每个文件夹分割被使用。 (即strcmp(fullfile('a','b')等于fullfile('a/','/b')

1

只要使用正斜杠,即可在任何地方使用。

不要让事情比他们应该更难。

2
[ndata, text, alldata] = xlsread([' D:/folder/' num2str(i) '/file ' ]) ;