I want to get the mean of each of the columns in a 3x4 array.
grades = [2,4,6; 5, NaN, 1; 7, 2,NaN]
The NaNs will cause the mean in that column to be a NaN so I think I have to first convert the matrix. I tried:
grades1 = cell2mat(grades)
But Matlab throws this error msg:
??? Cell contents reference from a non-cell array object.
Error in ==> cell2mat at 44
cellclass = class(c{1});
The grades matrix is a type double, so perhaps if I could convert it to something else, it would work, but when I tried a char array, it did work, but then I was still left with the NaN issue so converting it to something else appears tough.
*Note: I cannot use scripting for thiss. That means no for loops, if / else. I am just learning Matlab and I cannot use these yet.

 採用された回答

Matt J
Matt J 2025 年 8 月 4 日

0 投票

grades = [2,4,6; 5, NaN, 1; 7, 2,NaN]
grades = 3×3
2 4 6 5 NaN 1 7 2 NaN
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
mean(grades,'omitnan')
ans = 1×3
4.6667 3.0000 3.5000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

4 件のコメント

Project Science
Project Science 2025 年 8 月 4 日
I don't think I can. I mentioned I'm using Matlab version 2008b. This gives error:
??? Subscript indices must either be real positive integers or logicals.
So 'omitnan' I don't think is supported. It doesn't show using (Reference Page Not Found)
doc omitnan
Torsten
Torsten 2025 年 8 月 4 日
Then use "nanmean":
grades = [2,4,6; 5, NaN, 1; 7, 2,NaN];
nanmean(grades,1)
ans = 1×3
4.6667 3.0000 3.5000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Project Science
Project Science 2025 年 8 月 4 日
This worked, very simple - thanks!
Matt J
Matt J 2025 年 8 月 4 日
編集済み: Matt J 2025 年 8 月 4 日
I am just learning Matlab ... I mentioned I'm using Matlab version 2008b.
You should really upgrade, if at all possible, or get the trial/free version of Matlab Online. It is not a very good educational exercise to learn Matlab via a 17-year old version.

サインインしてコメントする。

その他の回答 (1 件)

Torsten
Torsten 2025 年 8 月 4 日

0 投票

grades = [2,4,6; 5, NaN, 1; 7, 2,NaN]
grades = 3×3
2 4 6 5 NaN 1 7 2 NaN
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
mean(grades,1,"omitnan")
ans = 1×3
4.6667 3.0000 3.5000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

カテゴリ

製品

リリース

R2008b

タグ

質問済み:

2025 年 8 月 4 日

編集済み:

2025 年 8 月 4 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by