我需要计算多个变量的均值、标准差和其他值,我想知道如何使用循环来发挥我的优势。我有 5 个数据电极。所以为了计算每个我这样做的平均值:
mean_ch1 = mean(ch1);
mean_ch2 = mean(ch2);
mean_ch3 = mean(ch3);
mean_ch4 = mean(ch4);
mean_ch5 = mean(ch5);
我想要的是能够将该代码压缩成一行左右。我试过的代码不起作用:
for i = 1:5
mean_ch(i) = mean(ch(i));
end
我知道这段代码是错误的,但它传达了我正在努力完成的想法。我想以循环命名的 5 个单独变量结束,或者一个包含所有 5 个变量的元胞数组,以便于调用。我知道一定有一种方法可以编写这段代码,但我只是不确定如何完成它。
最佳答案
您有几个选择可以如何做到这一点:
您可以先将所有 channel 数据放入一个大矩阵中,然后使用函数 MEAN 计算行或列的平均值.例如,如果每个
chX
变量都是一个 N×1 数组,您可以执行以下操作:chArray = [ch1 ch2 ch3 ch4 ch5]; %# Make an N-by-5 matrix meanArray = mean(chArray); %# Take the mean of each column
您可以先将所有 channel 数据放入元胞数组,然后使用函数 CELLFUN 计算每个元胞的平均值:
meanArray = cellfun(@mean,{ch1,ch2,ch3,ch4,ch5});
即使每个
chX
数组的长度彼此不同,这也会起作用。您可以使用 EVAL为每个 channel 均值生成单独的变量:
for iChannel = 1:5 varName = ['ch' int2str(iChannel)]; %# Create the name string eval(['mean_' varName ' = mean(' varName ');']); end
关于matlab - 如何在 MATLAB 的循环中创建/处理变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143959/