這應該在這裏工作。這可能有點粗糙,我沒有嘗試過優化,但是它完成了這項工作。我還首先添加了一個數字來考慮這種可能性。該代碼基於您確定> = 50的元素並遍歷每個塊。
function A = fun1()
A = [50,900; 24,700; 10,500; 36,560; 50,240; 10,600; 30,500; 70,450; 10,200];
idx = find(A(:,1)>=50);
idx(idx>1) = idx(idx>1)-1; % Elements >=50 is included in next block
idx(end+1) = size(A,1); % Include final elements
[~,tmp] = sort(A(1:idx(1),2)); % First iteration outside
A(1:idx(1),:) = A(tmp,:);
for k = 2:length(idx)
tmp=[];
[~,tmp] = sort(A(idx(k-1)+1:idx(k),2));
A(idx(k-1)+1:idx(k),:) = A(tmp+idx(k-1),:);
end
輸出:
A = [50 900
10 500
36 560
24 700
50 240
30 500
10 600
10 200
70 450]
我假設值[10, 200]
在預期的輸出是一個誤差。否則,你必須包含在算法中。這雖然沒有說明,所以我不能說。
不,先生,這是關於項目目的。它是根據對象的質心對某種排序對象的位置。 –
在循環中使用'sort'和loop循環並不是很困難:D但是我知道我們必須避免在MATLAB中使用循環,所以使用矩陣做這件事很有趣...... –
嗯,你能解釋一下你想要的東西嗎?更多?這很令人困惑.. – BillBokeey