声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1477|回复: 4

[编程技巧] 用matlab求两个向量元素相对应

[复制链接]
发表于 2014-11-5 09:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
如题,a=[1 1 1 1 2 2 3 3 3 4 4 4 4 4]; b=[ 2 2 2 2 3 3 5 5 5 1 1 1 1 1]
如何判断a 和 b中的元素是一一对应的?
[i,j,k]=unique(a)
[r,s,t]=unique(b)
n=isequal(sort(j),sort(s))
上面是我的思路,但感觉怪怪的。unique函数在判断相同元素后自动排了序,所以只好用sort,但用了sort后感觉不安全啊

回复
分享到:

使用道具 举报

 楼主| 发表于 2014-11-5 09:48 | 显示全部楼层
进一步的问题,a=[1 1 1 1 2 2 3 3 3 4 4 4 4 4]; b=[ 2 2 2 2 3 3 3 3 3 1 1 1 1 1]
只想判断,a中的同一元素下,b中的相同位置也是同一个元素
如a中的2对应的是b中3;a中的3对应的也是b中的3;但是没有对应出错的情况
发表于 2014-11-5 10:03 | 显示全部楼层
直接a==b不行吗
 楼主| 发表于 2014-11-5 10:32 | 显示全部楼层
弄了半天,终于弄出来了,有点麻烦,代码如下:
C1= unique(a);
    for i=1:length(C1)
        if length(unique(b(find(a==C1(i))))) > 1
            msgbox('b中元素匹配不对,a中同一个元素只能匹配b中同一个元素!');
            return
        end
    end
此代码当b为字符向量也可以 z='a':1:'z'; b =z(b)
 楼主| 发表于 2014-11-5 10:40 | 显示全部楼层
a==b 不成啊
举个例子好理解点:
有n个柱子  a存储了n个柱子相应的截面类型   a=[矩形柱 矩形柱 圆形柱 圆形柱 圆形柱 正方形柱...]
b中存储了n个柱子相应的计算方法,计算方法有m种,要保证相同类型的柱子计算方法相同. 判断b中是否有存储错误。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-4 08:39 , Processed in 0.048381 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表