cell配列に格納されたインスタンスをプロパティ値で並べ替える方法
조회 수: 1 (최근 30일)
이전 댓글 표시
下のように、score1とscore2というプロパティを持つクラスを定義し、
そのクラスのインスタンス(obj1~obj4)をcell配列(下コードのobjects)に格納したとき、
score1の大きい順にソートしたい。
classdef MyClass
properties
score1 int8
score2 int8
end
methods
function obj = MyClass(score1, score2)
obj.score1 = score1;
obj.score2 = score2;
end
end
end
% クラスのインスタンスを生成
obj1 = MyClass(10, 5);
obj2 = MyClass(3, 12);
obj3 = MyClass(5, 1);
obj4 = MyClass(11, 2);
% インスタンスのcell配列に格納
objects = {obj1, obj2, obj3, obj4} % ←この配列をscore1の順に並べ替えたい
댓글 수: 0
채택된 답변
Atsushi Ueno
2022년 6월 16일
% クラスのインスタンスを生成
obj1 = MyClass(10, 5);
obj2 = MyClass(3, 12);
obj3 = MyClass(5, 1);
obj4 = MyClass(11, 2);
% インスタンスのcell配列に格納
objects = {obj1, obj2, obj3, obj4} % ←この配列をscore1の順に並べ替えたい
% score1だけを取り出す
score1 = cellfun(@(x) x.score1, objects)
% score1を降順にソート(並び順のみ取得)
[~, ind] = sort(score1, 'descend')
% objectsを上記並び順に並べ替える
objects2 = objects(ind)
% score1の大きい順にソートされた事を確認
objects2{:}
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!