循环一个过程,每次输出数字标记的变量

时间:2015-06-05 11:36:34

标签: matlab

我有大约50个不同的数组,我想对所有数组执行以下操作:

data1(isnan(data1)) = 0;   
coldata1 = nonzeros(data1);   
avgdata1 = mean(coldata1);   

以及data2data3等等...目标是将data1转换为不带NaN s的向量,然后取一个均值,保存向量和coldata1avgdata1的平均值。

我正在寻找一种方法来为所有50个人自动化这个,而不是将其复制50次并更改数字...任何想法?我一直在玩eval但到目前为止没有运气。还尝试过:

for y = 1:50
    data(y)(isnan(data(y))) = 0;
    coldata(y) = nonzeros(data(y));   
    avgdata(y) = mean(coldata(y)); 
end 

1 个答案:

答案 0 :(得分:2)

你可以用eval来做,但实际上不应该这样做。而是使用此处建议的单元格数组:Create variables with names from strings

for y = 1:50
    data{y}(isnan(data{y})) = 0;
    coldata{y} = nonzeros(data{y});   
    avgdata{y} = mean(coldata{y}); 
end 

另请阅读How can I create variables A1, A2,...,A10 in a loop?了解其他选项。