登录论坛

查看完整版本 : [MATLAB GUI] 有关提取文件夹中文件名时遇到的问题


luckypany
2009-05-13, 11:50
我的目的是想通过对话框选择文件路径,然后把此路径文件夹下的数据文件的名字全部在列表框里显示出来,有朋友建议用DIR命令,刚才测试了一下,出现一些奇怪的现象,弄不明白是什么原因:

第一种情况:DIR命令里参数是用变量pathname,结果数据D的大小是0x1,而我在E:\data路径下是有4个数据文件的。下面是测试过程

>> [filename0,pathname]=uigetfile({'*.*'},'选择路径')
filename0 =
200305140951v

pathname =
E:\data\

>> D=dir('pathname')
D =
0x1 struct array with fields:
name
date
bytes
isdir

第二种情况:我把dir里的路径直接用E:\data\,结果D的大小是6x1,我观察了一下,前两个的D.name,一个是‘.’一个是‘..’,从第三个开始是我的数据文件名。

>> D=dir('E:\data\')
D =
6x1 struct array with fields:
name
date
bytes
isdir

因为我需要的是打开文件夹路径下的数据文件名,所以我接下来要把D结构中的D.name提取出来,我用循环来做:
D=dir('E:\data\')
sizeofD=size(D)
if( sizeofD(1)>2)
for i=1:sizeofD(1)-2
filename(i)=D(i+2).name
end
end

运行结果提示下面的错误:
??? Subscripted assignment dimension mismatch.

Error in ==> qixiang>pushbutton1_Callback at 90
filename(i)=D(i+2).name

Error in ==> gui_mainfcn at 75
feval(varargin{:});

Error in ==> qixiang at 42
gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback.

>>
看起来是filename(i)=D(i+2).name这里数据不匹配,
我不明白错在哪里,请高手指教以上遇到的几个问题。谢谢!

yhcode
2009-05-13, 12:41
你可以尝试下fopen(fullfile(pathname,filename,...))
其中pathname 和filename由uigetfile得到