每行的MATLAB平均值一次不包括一个列



我是Matlab的新手,并且搜索最近几个小时没有解决我的问题。我的目标是根据20个独立实验的平均值来计算扩散系数,然后通过这些扩散系数的根平方偏差估算统计不确定性

我有一个数据集:20列151行。每列代表一个实验。我想计算每行的平均值,但每次都将一列留出(因此一次省略一个实验(。因此,最终我希望每个具有151个"平均"值的20列。到目前为止,我尝试的是

DataExclOne = RawData;  
DataExclOne(:,1) = []  

我可以在所有20列中这样做,然后计算均值

mean (DataExclOne,2)

但是,这并没有真正的帮助。我想我需要某种循环来获得一个很好的平滑代码,但是我无法弄清楚(我在此网站上有一个查看:https://www.tutorialspoint.com/matlab/matlab/matlab_loops.htm(

那就是第一部分,第二部分我将不得不弄清楚何时完成;(随意阅读:
这些平均值比必须乘以10^-18来考虑正确的单位。
这些值的斜率与从条目16到136的设定时间(0-3000 PS(的斜率需要下降6。这些20个值(扩散系数(我想通过计算均方根偏差来测试统计不确定性(Alread在RMSD上找到了一些东西https://de.mathworks.com/matlabcentral/answers/4064-rmse-root-root-mean-square-error(。
感谢您的任何帮助或指导

您可以使用矩阵乘法:

% data matrix
A = rand(151,20);
% missing column indexes matrix
B = ones(20) - eye(20);
% mean of each row with one missing col at a time
V = (A*B)/19;
% do that again manually for columns 1 and 4
v1 = mean(A(:,2:end),2);
v4 = mean(A(:,[1:3 5:end]),2);
% check
diff1 = max(abs(V(:,1) - v1)) % 2.2204e-16
diff4 = max(abs(V(:,4) - v4)) % 1.1102e-16

您可以circshift移动数组,并每次均值跳过第一列。查看此脚本的控制台输出以确定正在发生的事情。。

x = 1:5;
x = [x;x;x];
y = zeros(size(x));
for nn = 1:size(x,2)
    x = circshift(x,1,2)
    y(:,nn) = mean(x(:,2:end),2)
end

相关内容

  • 没有找到相关文章

最新更新