【问题标题】:what function or loop do I have to use to average the matrix?我必须使用什么函数或循环来平均矩阵?
【发布时间】:2010-08-27 11:03:34
【问题描述】:

我想求所有矩阵的平均值:

数据=(数据{1}+......+数据{n})/n) 其中 Data{n} 是 m*n 的矩阵。

非常感谢

【问题讨论】:

    标签: matlab matrix sum average


    【解决方案1】:

    首先,将元胞数组转换为 3D 数组,然后取平均值,如下所示:

    tmp = cat(3,Data{:}); %# catenates the data, so that it becomes a m*n*z (or m*1*n)
    averageData = mean(tmp,3); %# takes average along 3rd dimension
    

    注意:如果您通过这种方式遇到内存问题,并且不需要保留变量Data,则可以将tmp 替换为Data,一切都会正常工作。

    或者,如果 Data 只是一个 m*n 数值数组

    averageData = mean(Data,2);
    

    【讨论】:

      【解决方案2】:

      如果您的元胞数组非常大,您可能希望远离上述解决方案,因为它会占用内存。然后我建议使用实用程序 mtimesx,它可以从 Matlab Central 获得,here

      N = length(Data);
      b = cell(N,1);
      b(:) = {1};
      averageData = mtimesx(Data,b)/N;
      

      在上面的例子中,我假设 Data 是一个线形单元阵列。我个人没用过mtimesx,这个方案来自there,这里也讨论了时序问题。

      希望这会有所帮助。

      一个。

      【讨论】:

      • 感谢您的帮助。我现在就试试!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 2023-03-12
      • 2015-07-27
      • 1970-01-01
      相关资源
      最近更新 更多