从同一扩展名但没有扩展名的目录中获取文件名(MATLAB)

从同一扩展名但没有扩展名的目录中获取文件名(MATLAB),matlab,Matlab,我对MATLAB相当陌生,所以如果我说的东西完全错误,请原谅。我正试图编写一个小程序,从某个扩展名为.xlsx的目录中读取文件,然后将列分配给向量。当我手动放弃文件名时,我的程序如下所示: files = {'130926','130927'} file_number = 1; file_amount = length(files); while file_number <= file_amount file_name = files(file_number); cd('C:\place_

我对MATLAB相当陌生,所以如果我说的东西完全错误,请原谅。我正试图编写一个小程序,从某个扩展名为.xlsx的目录中读取文件,然后将列分配给向量。当我手动放弃文件名时,我的程序如下所示:

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
但这一切都会产生错误。 谢谢你的阅读

Matthias使用带有通配符搜索的函数

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文件的名称。

使用通配符搜索功能

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文件的名称。

这样如何:-

>> list = dir('C:\path\*.xlsx');
>> names=cellfun(@(x)x(1:end-5),{list.name},'UniformOutput', false);
使用
名称{1}
名称{2}
。。。诸如此类

这将创建一个匿名函数,用于处理从
dir
命令接收的名称单元格

键入:
帮助目录
帮助cellfun
在命令提示符下获取更多详细信息

如何:-

>> list = dir('C:\path\*.xlsx');
>> names=cellfun(@(x)x(1:end-5),{list.name},'UniformOutput', false);
使用
名称{1}
名称{2}
。。。诸如此类

这将创建一个匿名函数,用于处理从
dir
命令接收的名称单元格


键入:
help dir
help cellfun
有关命令提示符下的更多详细信息,请参见:

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
files=dir('C:\Users\Matthias\Desktop\KUL\2e\u Master\Thesis\MBR\u data\MBR\u online\*cs.xlsx')
文件编号=1;
文件数量=长度(文件);

当文件编号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
files=dir('C:\Users\Matthias\Desktop\KUL\2e\u Master\Thesis\MBR\u data\MBR\u online\*cs.xlsx')
文件编号=1;
文件数量=长度(文件);

而文件号给了你什么错误?这样的信息更容易帮助你。它给了你什么错误?这类信息使您更容易获得帮助。感谢您的回复。它确实向我显示了该目录中存在的文件名,但我需要它将这些文件名放入一个数组中,以便在上面的代码中使用。因此,上面代码生成的文件名应该放在$files={}$中。而且应该是没有扩展名.xlsx的名称。@Matthias我不明白你所说的
$files={}$
是什么意思。要仅获取文件名,请调用该函数。当我使用
fileparts
函数时,会出现一个错误,提示输入必须是行向量或字符…感谢您的响应。它确实向我显示了该目录中存在的文件名,但我需要它将这些文件名放入一个数组中,以便在上面的代码中使用。因此,上面代码生成的文件名应该放在$files={}$中。而且应该是没有扩展名.xlsx的名称。@Matthias我不明白你所说的
$files={}$
是什么意思。要仅获取文件名,请调用该函数。当我使用
fileparts
函数时,会出现一个错误,提示输入必须是行向量或字符…感谢您的响应。我在我的目录上试过这个,它成功了。但并非完全如此。除了文件夹中存在的文件的三个文件名外,它还返回[1x0 char]两次。我认为,正因为如此,当我使用名称作为输入时,我的其余代码会产生一个错误。@Matthia是的,必须有其他代码生成这些额外的
[1x0 char]
,您只需键入一个命令即可验证这一点。谢谢您的响应。我在我的目录上试过这个,它成功了。但并非完全如此。除了文件夹中存在的文件的三个文件名外,它还返回[1x0 char]两次。我认为,正因为如此,当我使用名称作为输入时,我的其余代码会产生一个错误。@Matthia是的,必须有其他代码生成这些额外的
[1x0 char]
,您只需在windows中键入此命令即可验证