假设我有两个矩阵p
p =
1 3 6 7 3 6
8 5 10 10 10 4
5 4 8 9 1 7
5 5 5 3 8 9
9 3 5 4 3 1
3 3 9 10 4 1然后,在将矩阵p的列按升序排序之后
y =
1 3 5 3 1 1
3 3 5 4 3 1
5 3 6 7 3 4
5 4 8 9 4 6
8 5 9 10 8 7
9 5 10 10 10 9我想知道,给定来自y的值,它的行在p中是什么
示例:位于第6列第1行的矩阵p中的值3。
在排序后,它位于第2行第1列中的矩阵y中。
所以我想要在矩阵y中排序后的值,它最初在矩阵p中。
发布于 2013-11-23 09:29:31
只需使用sort的第二个输出
[y ind] = sort(p);您想要的结果(每个值的原始行)在矩阵ind中。
发布于 2013-11-22 18:56:40
Matlab sort命令返回第二个值,可用于对原始数组或矩阵进行索引。来自sort文档:
[Y,I] = sort(X,DIM,MODE) also returns an index matrix I.
If X is a vector, then Y = X(I).
If X is an m-by-n matrix and DIM=1, then
for j = 1:n, Y(:,j) = X(I(:,j),j); end发布于 2013-11-22 19:27:45
好吧,我完全明白你想要什么。
我会给你我现在写的代码,它不是最优的,但是你可以优化它,或者我可以和你一起工作,以便得到更好的代码。
P和y有相同的大小。
[n,m]=size(p);
for L=1:m
i=1;
temp=y(i,L);
while(i<=n)
if(temp==y(i,L))
% So it is present in case i of p
disp(['It is present in line' num2str(i) ' of p']);
end
i=i+1;
end
end哇!!
https://stackoverflow.com/questions/20152061
复制相似问题