创建工作区变量的单元数组,而无需手动将它们全部写出.马特拉布



>我在工作区中有 20 个列向量,我希望它们都包含在一个单元格数组中。它们都被标记为 data1、data2、data3,...数据20.

有没有比以下更快的方法可以做到这一点:

cell = {data1, data2, data3, data4, data5, data6, ...}

一直到 Data20?

不是最快的方法,但您可以按如下方式进行操作:

  1. 将所需变量保存在临时文件中
  2. 加载该文件以获取结构数组中的所有变量
  3. 将该结构数组转换为单元格数组

那是

save temp_file -regexp datad+    %// step 1
allData = load('temp_file.mat');  %// step 2
allData = struct2cell(allData);   %// step 3

正如我在评论中已经提到的,这样的变量名称是一个坏主意。如果您确实必须使用它们并且没有其他可能性,请使用以下代码获取单元格数组:

C=cell(1,3)
for ix=1:numel(C),C{ix}=eval(sprintf('data%d',ix));end

我建议不要使用 eval,详细信息在这里:为什么要避免 eval 函数和它的替代品。

最新更新