A = [299,3;350,30;350,7;450,116;450,60;500,38;500,82;568,14];があるとします。
そして、A(:,1)がy座標で、A(:,2)がx座標だとします。
そこで、それぞれのy座標で一番小さいx座標の値とそれに対応したy座標を抽出したいです。
上記の例でいうと、y = 299ではx = 3しかないので299と3を抽出、y = 350ではx = 7,30があるので350と7を抽出するということをしたいです。
つまり、最終的にB = [299,3;350,7;450,60;500,38;568,14]と自動で出てくるようなスクリプトを作成したいです。
どのようにすればいいでしょうか。

 채택된 답변

交感神経優位なあかべぇ
交感神経優位なあかべぇ 2022년 11월 15일

1 개 추천

下記にスクリプト例を記述します。
A = [299,3;350,30;350,7;450,116;450,60;500,38;500,82;568,14];
B = zeros(0, 2);
while ~isempty(A)
minY = min(A(:, 1));
minYIdx = A(:, 1) == minY; % Yの最小値のインデックス取得
minX = min(A(minYIdx, 2)); % Y最小値インデックスの中から最も小さいXを取得
B(end + 1, :) = [minY, minX];
A(minYIdx, :) = []; % AからYの最小値インデックスを削除
end
B
B = 5×2
299 3 350 7 450 60 500 38 568 14

댓글 수: 1

雅晶
雅晶 2022년 11월 18일
ありがとうございました。参考になりました。

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Shunichi Kusano
Shunichi Kusano 2022년 11월 15일

2 개 추천

grpstats関数が適当かと思います。
A = [299,3;350,30;350,7;450,116;450,60;500,38;500,82;568,14];
minx = grpstats(A(:,2),A(:,1),'min') % XをYグループについてまとめて最小値を計算
minx = 5×1
3 7 60 38 14
y = unique(A(:,1))
y = 5×1
299 350 450 500 568

댓글 수: 1

雅晶
雅晶 2022년 11월 18일
ありがとうございました。参考にさせていただきます。

댓글을 달려면 로그인하십시오.

Atsushi Ueno
Atsushi Ueno 2022년 11월 15일

1 개 추천

sortrows関数とunique関数を使いました。
A = [299,3;350,30;350,7;450,116;450,60;500,38;500,82;568,14];
SA = sortrows(A);
[~,ia,~] = unique(SA(:,1));
SA(ia,:)
ans = 5×2
299 3 350 7 450 60 500 38 568 14

댓글 수: 1

雅晶
雅晶 2022년 11월 18일
ありがとうございました。参考にさせていただきます。

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 反復測定と多変量分散分析 (MANOVA)에 대해 자세히 알아보기

제품

릴리스

R2022b

태그

질문:

2022년 11월 15일

댓글:

2022년 11월 18일

Community Treasure Hunt

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

Start Hunting!