首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab中两个矩阵的匹配

matlab中两个矩阵的匹配
EN

Stack Overflow用户
提问于 2013-11-22 18:35:23
回答 3查看 463关注 0票数 2

假设我有两个矩阵p

代码语言:javascript
复制
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的列按升序排序之后

代码语言:javascript
复制
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中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-23 09:29:31

只需使用sort的第二个输出

代码语言:javascript
复制
[y ind] = sort(p);

您想要的结果(每个值的原始行)在矩阵ind中。

票数 1
EN

Stack Overflow用户

发布于 2013-11-22 18:56:40

Matlab sort命令返回第二个值,可用于对原始数组或矩阵进行索引。来自sort文档:

代码语言:javascript
复制
[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
票数 1
EN

Stack Overflow用户

发布于 2013-11-22 19:27:45

好吧,我完全明白你想要什么。

我会给你我现在写的代码,它不是最优的,但是你可以优化它,或者我可以和你一起工作,以便得到更好的代码。

P和y有相同的大小。

代码语言:javascript
复制
    [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

哇!!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20152061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档