matlab - 如何在 MATLAB 的循环中创建/处理变量?

标签 matlab variables loops cell-array

我需要计算多个变量的均值、标准差和其他值,我想知道如何使用循环来发挥我的优势。我有 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/

相关文章:

matlab - 为什么过滤元胞数组中的某些行对于 Octave 中的赋值有不同的行为?

matlab - 如何在矩阵周围添加镜像填充?

java - 使用变量值来选择要更改的 UI 标签

ios - 如何跟踪 UICollectionView 索引

r - 如何针对大型数据表优化 R 中的 for 循环

matlab - 如何在 Matlab 中从数据集中删除数据点

java - Java 中静态的最佳用途是什么

excel - 如何使用 VBA 遍历 Excel 中的可变列长范围

linux - 如何将 file1 的每一列附加到 file2 的特定字段并制作新的输出文件?

matlab - 为 NaN 值创建 Bin