如何在MATLAB中循环重命名一组变量?

时间:2012-05-28 11:22:07

标签: excel matlab

我导入了一个填充数据的矩阵X,并将每列的相应标题导入MATLAB。现在的问题是如何在标题单元格中按照其相应名称重命名X的每一列。
我想循环执行此操作。
有人会告诉我如何在这种情况下循环重命名程序?

2 个答案:

答案 0 :(得分:2)

我建议从数据中创建structure,而不是单个变量。即使有大量列,这也不会使工作空间混乱,也不会在名称冲突的情况下覆盖工作空间中已有的变量。它会将电子表格中的所有数据保存在一起,并且仍允许按列名访问它。要从列名称的单元格数组和数据矩阵轻松创建结构,请使用cell2struct

>> colnames = {'odds','evens'};
>> data = [1 2;3 4;5 6];
>> spreadsheet_structure = cell2struct(num2cell(data,1), colnames, 2)

spreadsheet_structure = 

     odds: [3x1 double]
    evens: [3x1 double]

num2cell(M,1)创建一个单元格数组,其中每个单元格都是矩阵M中的一列)

答案 1 :(得分:0)

循环标题列并使用eval创建变量,其名称在矩阵“header”中包含为字符串:

  [X,header,~] = xlsread('eaef21.xls',1,'A1:AY541');
  for H = 1:size(header,2)
     eval([header(1,H), " = X(:,", H, ");"]);
  end

eval替换为disp通常非常有用,直到您确信它正常工作为止。使用disp将帮助您了解正在发生的事情。