声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3645|回复: 11

[编程技巧] 两个向量对应位置处元素比较重组问题

[复制链接]
发表于 2010-12-9 08:12 | 显示全部楼层 |阅读模式

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

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

x
现有向量a=[1 3 6 2 5],b=[2 1 5 6 8],我想把两个向量对应位置处的两个元素进行比较,然后将比较结果较小的排成一列,较大的排成一列,在这个例子中,结果应该为[1 1 5 2 5],我该怎么做,或者用什么函数呢?谢谢
回复
分享到:

使用道具 举报

发表于 2010-12-9 08:15 | 显示全部楼层
a=[1 3 6 2 5];
b=[2 1 5 6 8];
c=zeros(1,5);
d=c;
for i=1:5
    c(i)=min(a(i),b(i));
    d(i)=max(a(i),b(i));
end
c
d

评分

1

查看全部评分

 楼主| 发表于 2010-12-9 08:29 | 显示全部楼层
回复 2 # huaijuliu 的帖子

恩!是这样的,谢谢huaijuliu,非常感谢
 楼主| 发表于 2010-12-9 08:36 | 显示全部楼层
回复 3 # cboboc 的帖子

我想再请问一下,我这样做为什么不对呢?
for i=1:5
if a(i)<b(i)
c=a
else
c=b
end
end
发表于 2010-12-9 09:07 | 显示全部楼层
  1. clear;
  2. a=[1 3 6 2 5];b=[2 1 5 6 8];
  3. abMin=min(a,b)'
  4. abMax=max(a,b)'
复制代码
matlab的一个优势在于向量化的计算

评分

1

查看全部评分

发表于 2010-12-9 09:43 | 显示全部楼层
a=[1 3 6 2 5];
b=[2 1 5 6 8];
min(a,b)

评分

1

查看全部评分

发表于 2010-12-9 16:54 | 显示全部楼层
发表于 2010-12-10 15:33 | 显示全部楼层
cboboc 发表于 2010-12-9 08:36
回复 2 # huaijuliu 的帖子

我想再请问一下,我这样做为什么不对呢?


a=[1 3 6 2 5];
b=[2 1 5 6 8];
c=zeros(1,5);
for i=1:5
  if a(i)<b(i)
       c(i)=a(i);
  else
      c(i)=b(i);
  end
end
 楼主| 发表于 2010-12-13 10:31 | 显示全部楼层
huaijuliu 发表于 2010-12-9 16:54
c=b这句话意味着c的所有元素都等于b中元素
应改为
c(i)=b(i)

恩明白了谢谢呵呵
 楼主| 发表于 2010-12-13 10:45 | 显示全部楼层
yufeng 发表于 2010-12-9 09:43
a=[1 3 6 2 5];
b=[2 1 5 6 8];
min(a,b)

谢谢,这个看似简单的小问题,一下子有好多种算法!呵呵太感谢了
发表于 2010-12-13 22:54 | 显示全部楼层
本帖最后由 zhouyang664 于 2010-12-13 22:54 编辑

这个问题用sort就完全可以啊!
>> a=[1 3 6 2 5];b=[2 1 5 6 8];
>> c = sort([a' b'],2)
c =
     1     2
     1     3
     5     6
     2     6
     5     8
>> min = c(: , 1)' , max = c(: , 2)'
min =
     1     1     5     2     5
max =
     2     3     6     6     8

评分

1

查看全部评分

发表于 2010-12-13 23:59 | 显示全部楼层
回复 11 # zhouyang664 的帖子

稍微修改下
a=[1 3 6 2 5];b=[2 1 5 6 8];
c = sort([a; b])
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-16 12:05 , Processed in 0.069707 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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