>我在工作区中有 20 个列向量,我希望它们都包含在一个单元格数组中。它们都被标记为 data1、data2、data3,...数据20.
有没有比以下更快的方法可以做到这一点:
cell = {data1, data2, data3, data4, data5, data6, ...}
一直到 Data20?
不是最快的方法,但您可以按如下方式进行操作:
- 将所需变量保存在临时文件中
- 加载该文件以获取结构数组中的所有变量
- 将该结构数组转换为单元格数组
那是
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 函数和它的替代品。