我有兩個矩陣X
和G
在Matlab中具有相同維數MxN
。我想下面在Matlab中對矩陣的每一行中的元素進行重新排序
clear all
rng default;
M=12;
N=3;
X=randi([0 1], M,N);
G=randi([0 1], M,N);
%for i=1,...N
% List in descending order the elements of G(i,:)
% If G(i,h)=G(i,j), then order first G(i,h) if X(i,h)>X(i,j), and
% order first G(i,j) if X(i,j)>X(i,h). If G(i,h)=G(i,j) and
% X(i,j)=X(i,h), then any order is fine.
% Use the order determined for G(i,:) to order X(i,:).
% Combine the ordered X(i,:) and G(i,:) in B(i,:)
%end
描述這段代碼做什麼,我想
A(:,:,1)=X;
A(:,:,2)=G;
B=zeros (size(A,1),2*N);
for i = 1:size(A,1),
B(i,:) = reshape(sortrows(squeeze(A(i,:,:)), [-2 -1]),1,2*N);
end
然而,當M
大可能放緩至同時訂購的每一行。例如,與M=8000
和N=20
大約需要0.6秒,這是很多,因爲我不得不多次重複該過程。
你有更有效的建議嗎?
例
X=[0 0 0 1;
1 1 0 0];
G=[0 1 0 1;
0 0 1 0];
B=[1 0 0 0 | 1 1 0 0;
0 1 1 0 | 1 0 0 0];
它將幫助,如果您發佈帶有輸入和輸出的一個小例子,讓你想 –
我已經加入和示例清楚什麼 – user3285148