2013-09-27 70 views
1

我在MATLAB上是相当新的,所以如果我说的东西是完全错误的,请原谅。我正在尝试编写一个小程序,该程序从扩展名为.xlsx的特定目录中读取文件,然后将列分配给向量。当我手动放弃的文件名,我的计划是这样的:从相同扩展名的目录获取文件名,但没有扩展名(MATLAB)

files = {'130926','130927'} 
file_number = 1; 
file_amount = length(files); 
while file_number <= file_amount 
file_name = files(file_number); 
cd('C:\place_where_I_store_my_files'); 
A = xlsread(char(strcat(file_name))); 
J = A(:,1); 
J_sp = A(:,2); 
file_number = file_number + 1 
end 

我已经试过自动至极之间的很多不同的东西在文件阅读:

files = {'*.xlsx'} 

但是这一切都产生错误。 感谢您的阅读。

马蒂亚斯

+0

什么错误,是它给您?这种信息使您更容易帮助您。 – iamnotmaynard

回答

0

FYI,这为我做:

files = dir('C:\Users\Matthias\Desktop\KUL\2e_Master\Thesis\MBR_data\MBR_online\*cs.xlsx') 
file_number = 1; 
file_amount = length(files); 
while file_number <= file_amount 
file_name = files(file_number).name; 
cd('C:\place_where_I_store_my_files'); 
A = xlsread(char(file_name)); 
J = A(:,1); 
J_sp = A(:,2); 
file_number = file_number + 1 
end 

问候, 马蒂亚斯

1

使用dir功能用通配符搜索。

my_path = 'C:\place_where_I_store_my_files'; 
xlsfiles = dir(fullfile(my_path, '*.xlsx')); 
for ii = 1 : length(xlsfiles) 
    disp(fullfile(my_path, xlsfiles(ii).name)); 
end 

上面的代码将显示所有XLSX目录中的文件指定的名称。

+0

感谢您的回复。它确实显示了该目录中存在的文件名,但我需要它将它们放入一个不能用于上面代码的数组中。所以上面代码生成的文件名应该放在$ files = {} $中。它应该只是没有扩展名.xlsx的名称。 – Matthias

+0

@Matthias我不明白'$ files = {} $'是什么意思。要获取文件名称,请调用['fileparts'](http://www.mathworks.com/help/matlab/ref/fileparts.html)函数。 – Praetorian

+0

当我使用'fileparts'函数时,它给出了一个错误,说输入必须是一个行向量或字符... – Matthias

0

如何: -

>> list = dir('C:\path\*.xlsx'); 
>> names=cellfun(@(x)x(1:end-5),{list.name},'UniformOutput', false); 

访问使用names{1}names{2} ...等等

这将创建从dir命令接收的姓名的细胞起作用的匿名函数。

类型:help dirhelp cellfun在命令提示符下更多的细节

+0

感谢您的回复。我试过这个在我的目录,它的工作。但不完全。除文件夹中存在的文件的三个文件名外,还将返回[1x0个字符]两次。我认为,因为这个,当我使用名称作为输入时,其余的代码会产生错误。 – Matthias

+0

@Matthias是的,必须有一些其他的代码产生额外的'[1x0 char]',你可以验证这一点,只需输入这个命令窗口 – P0W

+0

@POW我只使用你的代码和'[1x0 char]'仍然那里... – Matthias

相关问题