2017-07-17 108 views
-1

我有以下的MATLAB:MATLAB读取Excel数据环

data1 = xlsread('C:\Desktop\example.xlsx','PKA1'); 
data2 = xlsread('C:\Desktop\example.xlsx','PKA2'); 

一路高达24

如何创建一个循环来为我做到这一点?

这将创建24个变量:数据1,数据2,数据3,等所有对应pKa1的,PKA2,PKA3等

如何创建一个循环,在数据1,数据2读取,而不需要编写他们都出来吗?

回答

3

请勿创建动态变量。阅读here为什么。如果每张纸的内容相同,请使用数组。否则使用单元格数组。使用num2str将循环变量转换为字符串,并使用concatenate将其与通用字符串PKA一起使用。

k = cell(1,24); %Pre-allocation 
for k=1:24 
    data{k} = xlsread('C:\Desktop\example.xlsx',['PKA', num2str(k)]); 
end 
+0

如果我这样做,我该如何读取某些变量的数据?以前我有:t = data1(1,:);有没有快速的方法来创建say,t1,t2,它对应于所有24个案例的第一列数据? – Jack

+0

就像它存储数据一样。 'data {1}','data {2}',... –

+0

如果我想将每个数组的第一列读入t1,t2等,该怎么办?可以用循环来完成吗? – Jack

-1

As @Sardar said你不应该使用eval来继续工作。但如果你愿意,你可以使用eval如下所示:

for idx = 1:24 
    varName = ['data', num2str(idx)]; // concatenate the string 
    columnName = ['PKA', num2str(idx)]; 
    xlsReadFunc = ['xlsread(''C:\Desktop\example.xlsx'',''',columnName,'''']; 
    finalExp = [varName,'=', xlsReadFun]; 
    eval(finalExp); 
end 
+3

http://i.imgur.com/XtcajQS.gif –