操作dir(';/folder';)返回的Matlab结构

操作dir(';/folder';)返回的Matlab结构,matlab,Matlab,我最近将我的Matlab版本从2007a更新到2012a,我遇到了一个问题,一些代码在R2007a上运行得很好。特别是关于dir('./folder') 例如: X = dir('./folder'); p = X(:).name; 在R2007a中运行此代码时,p包含该文件夹中的所有文件名,但在R2012a中,p仅包含X.names中第一个文件的名称。我也尝试过: p = X.name; 及 所有这些都不会生成所需的文件名列表 还有其他人遇到过这个问题吗?有人能给我指出正确的方向吗?谢谢

我最近将我的Matlab版本从2007a更新到2012a,我遇到了一个问题,一些代码在R2007a上运行得很好。特别是关于
dir('./folder')

例如:

X = dir('./folder');
p = X(:).name;
在R2007a中运行此代码时,p包含该文件夹中的所有文件名,但在R2012a中,p仅包含X.names中第一个文件的名称。我也尝试过:

p = X.name;

所有这些都不会生成所需的文件名列表


还有其他人遇到过这个问题吗?有人能给我指出正确的方向吗?谢谢

我很惊讶R2007a竟然能做到这一点。无论如何,一直有效的方法是连接到一个单元阵列中:

p = {X.name};

我没有R2012要测试(只有八度音阶,我不确定它模拟的是什么版本),但我怀疑
p={X.name}
会将
p
转换成一个单元格数组,这样
p{I}
就是
I
第条路径。@mathematical.coffee:我看到你想到了同样的事情。是的,很有效。很好,很有效!但是我不明白为什么X.name还没有被认为是一个单元格数组。我可以接受语法就是这样工作的,但是有没有什么特别的理由说明括号是必要的?如果X.name是一个单元格数组,那么它们会添加什么信息?@GPSmaster:
X
是一个结构数组,
X(i)。name
是一个字符串,而不是单元格数组
X.name
返回多个用花括号括起来的输出参数,就好像您编写了
{X(1).name,X(2).name,
等等。例如,class()函数适用于我遇到的每个对象,但对于X.name,它只返回“cell”如果X.name被括号括起来。否则它会返回一个错误。哦,我明白了。当我提出这个问题时,我没有看到你的回答。谢谢你的解释!但最后一个问题,没有括号的X.name是对象吗?@GPSmaster:同样,问题是在结构数组上调用一个字段会返回多个参数。类只接受一个参数这就是它出错的原因。您可以调用
class(X)
,这表明它是一个结构,或者调用
class(X(1).name)
返回
char
p = {X.name};