hey all! so i've been playing with cells and structures etc.
i have a structure 'students' with fields:name,id,grades.
in grades i have a nx1 cell array where n is the number of grades per students. the grades are in string and not numbers.
i wanted to calculate every student's avarage. i used a for loop and cell2mat and it gave me an nx2 matrix of char objects.
the problem is the last students, one of his grades is 100 which is 3 letters instead of 2 and because of that cell2mat has no idea how to compensate for it.
i know i could have made things easier for myself if i made a more normal structure in the first place but i'm too far in the excercise now lol.
any idea how to work with this?

2 件のコメント

DGM
DGM 2022 年 6 月 20 日
Show us what code you have and provide an example of your data so that we can see what's going on.
daniel slama
daniel slama 2022 年 6 月 20 日
of course, my bad.
this is my attempt to calculate every student's avarage with notes of what i tried to to every line.
[a b]=size(students)
for i = [1:1:b]
charmat=cell2mat(students(i).grades) %creates the nx2 matrix and gets stuck with the last student
[c d]=size(charmat)
nummat=[]
for x = [1:1:c]
temp=str2num(charmat(x,:)
nummat=[nummat ; temp] %makes a number matrix out of the char matrix
end
students(i).avarage=mean(nummat)
end

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

 採用された回答

dpb
dpb 2022 年 6 月 20 日

0 投票

Indeed, you made dereferencing the data about as hard as could by putting it into cell array -- a struct could/can hold an ordinary array; it shouldn't be too hard to change the code to make the grades arrays numeric to start with...but one way to your objective here is\
>> arrayfun(@(i)mean(str2double(students(i).grades)),1:numel(students),'UniformOutput',true)
ans =
84.0000 98.5000 86.1667 57.3333 87.2500
>>

2 件のコメント

daniel slama
daniel slama 2022 年 6 月 20 日
this is incredible. i did mess up with the struct, guess i still need to work on that.
thank you so much!
dpb
dpb 2022 年 6 月 20 日
Will become familiar idiom (along with the companion functions for cell arrays and sructure fields) with time...

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Structures についてさらに検索

製品

リリース

R2020b

質問済み:

2022 年 6 月 20 日

コメント済み:

dpb
2022 年 6 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by