【问题标题】:Using load with data from cells对来自单元格的数据使用负载
【发布时间】:2013-03-02 22:31:18
【问题描述】:

在我的代码中,我尝试将负载与来自单元格的条目一起使用,但它不起作用。下面我的代码部分生成一个 3 维字符串数组。字符串表示文件名的路径。

for i = 1:Something
 for j = 1:Something Different
  for k = 1: Yet Something Something Different
    DataPath{j,k,i} = 'F:\blah\blah\blah\fileijk    %file changes based on i,j,and k       
  end
 end
end

在代码的下一部分中,我想使用 load 来使用上面代码中定义的路径名打开文件。我使用下面的代码执行此操作。

Dummy = DataPath{l,(k-1)*TSRRange+m}; 
Data = load(Dummy);

这个想法是让 Dummy 将字符串内容从 DataPath 中取出,以便我可以在加载时使用它。通过这样做,我认为 Dummy 将被定义为字符串而不是单元格,但事实并非如此。如何将字符串从 DataPath 中拉出,以便在负载时使用它?谢谢。

我必须以这种方式加载数据,因为数据位于多个文件夹中。如果需要,我可以发布更多代码,但它很复杂。

【问题讨论】:

  • 如果Dummy 是一个单元格,那么DataPath 的构建方式肯定与您在示例代码中显示的方式不同。
  • 无论如何都可以使用cell2mat(Dummy)获取单元格中的字符串。
  • 如果l,k,m,TSRRange 变量是标量,并且如果您没有出现尺寸错误,您的第二部分应该可以工作。问题是您真的在第一部分将字符串分配给DataPath 吗?可能它们实际上是细胞吗?您是直接分配字符串还是来自某个变量?

标签: string cells matlab-load


【解决方案1】:

Dummy 是一个单元,因为您分配了一个 3D 单元数组,但正在使用 Dummy = Datapath{1,(k-1)*TSRRange+m} 访问一个 2D 单元

我不相信您可以期望以这种方式访问​​所有单元格元素。而是像创建它时那样使用三个索引。

【讨论】:

  • 这就是我所缺少的。我没有在代码的第二部分分配第三个维度。今天编码太多......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多