Subtracting in a structure

Hi, Sorry if some stuff doesnt make sense as I'm quite new to matlab!I have 1 x 229 struct array with 13 fields. One of the fields is a total number which adds up consecutively from a count.
Pass(NumPass).TotalPlayers = Count3
I'm trying to find a way to minus these numbers from each other so the difference is added to a SortedTotalPlayers field, so if the first 5 numbers in the TotalPlayers field were: 6,10,12,16,26, I would want the first 5 numbers in the SortedTotalPlayers field to be 6,4,2,4,10.
Pass(NumPass).SortedTotalPlayers = ?
I haven't realy got a clue what to put after the = sign, is this possible?
Thanks

回答 (3 件)

dpb
dpb 2021 年 11 月 21 日

0 投票

Pass(NumPass).SortedTotalPlayers = diff[0 Pass(NumPass).SortedTotalPlayers];
Stephen23
Stephen23 2021 年 11 月 21 日
編集済み: Stephen23 2021 年 11 月 21 日

0 投票

You can do all of them at once using some comma-separated lists:
S(1).F = 6;
S(2).F = 10;
S(3).F = 12;
S(4).F = 16;
S(5).F = 26;
S.F % checking
ans = 6
ans = 10
ans = 12
ans = 16
ans = 26
C = num2cell(diff([0,S.F]));
[S.F] = C{:};
S.F % checking
ans = 6
ans = 4
ans = 2
ans = 4
ans = 10
Image Analyst
Image Analyst 2021 年 11 月 21 日

0 投票

Try this:
NumPass = 1;
Pass(NumPass).TotalPlayers = [6,10,12,16,26];
firstNumber = Pass(NumPass).TotalPlayers(1); % Get the "6"
Pass(NumPass).SortedTotalPlayers = [firstNumber, diff(Pass(NumPass).TotalPlayers)]
Pass = struct with fields:
TotalPlayers: [6 10 12 16 26] SortedTotalPlayers: [6 4 2 4 10]

カテゴリ

製品

リリース

R2021b

タグ

質問済み:

2021 年 11 月 21 日

回答済み:

2021 年 11 月 21 日

Community Treasure Hunt

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

Start Hunting!

Translated by