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这里数据不匹配,
我不明白错在哪里,请高手指教以上遇到的几个问题。谢谢!
第一种情况: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这里数据不匹配,
我不明白错在哪里,请高手指教以上遇到的几个问题。谢谢!