How can i find cumulative mean inside a for loop?
4 次查看(过去 30 天)
显示 更早的评论
Hey everyone,
I have a code which helps me to calculate the mean values. Each of the "cellList.meshData(j)" corresponds to a single column vector of values. I would like it to give me the total mean of all 25 cells. The following code gives me the mean for each cell.
for j=1:25
data=cellList.meshData(j);
if isempty(data{1,1})
continue
end
mean_int_val = mean(cellList.meshData{j}{1,1}.signal2);
end
1 个评论
Johannes Fischer
2019-9-3
To imporve code-readability, I would not use 'continue' in this case:
for j = 1:25
data = cellList.meshData(j);
if ~isempty(data{1, 1})
mean_int_val = mean(cellList.meshData{j}{1, 1}.signal2);
end
end
采纳的回答
Nicolas B.
2019-9-3
编辑:Nicolas B.
2019-9-3
Hi,
For your situation, you should consider that . So they are 2 situations:
- All vectors have the same size
- Vectors can have different sizes
If you are in the first situation, I would simply keep all mean_int_val and simply recompute the the mean of all means.
nData = 25;
mean_int_val = NaN(1, nData);
for j=1:nData
data=cellList.meshData(j);
if isempty(data{1,1})
continue
end
mean_int_val(j) = mean(cellList.meshData{j}{1,1}.signal2);
end
mean_total = mean(mean_int_val, 'omitnan');
If you are in the second situation, I would also keem the number of samples and then compute the mean.
nData = 25;
mean_int_val = NaN(1, nData);
mean_size = NaN(1, nData);
for j=1:nData
data=cellList.meshData(j);
if isempty(data{1,1})
continue
end
mean_int_val(j) = mean(cellList.meshData{j}{1,1}.signal2);
mean_size(j) = numel(cellList.meshData{j}{1,1}.signal2);
end
mean_total = sum(mean_int_val .* mean_size) / sum(mean_size);
4 个评论
Nicolas B.
2019-9-3
Thanks for the comment. I corrected it with j instead of i (bad habits).
In my suggestions, the mean of all means is saved in mean_total variable.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Identification 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!