声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2283|回复: 9

[编程技巧] 相同值下标索引问题

[复制链接]
发表于 2007-3-14 21:57 | 显示全部楼层 |阅读模式

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

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

x
紧急求助:
现在论文部分需要一小程序计算,但是弄了一个晚上没有搞定,请高手帮忙。
如有两列值a,b,每一个a值对应一个b中的值。
现在想找出a中相同的值所对应的b的值,在编程中遇到了问题,如何把a中相同的值的位置记录输出呢?或者如何实现这个过程?我编程时每次得到的记录a中相同值的位置时就会冲掉前面已经求出的结果,如何把所有满足条件的都保存下来呢?
请高手帮忙解决下,谢谢先

[ 本帖最后由 eight 于 2007-3-15 10:42 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-3-14 22:03 | 显示全部楼层
如何把所有满足条件的都保存下来呢


用数组而非单变量存储

ps:你的问题最好用一个简单例子来说明
 楼主| 发表于 2007-3-15 09:08 | 显示全部楼层
如下面所示的例子,我写的前一部分程序如下:
function p=fuping
a=[1 2 5 1 6 3 2 1]; f=[3 5 6 4 2 8 7 6]; n=length(a);
for i=1:n
    p=find(a==a(i));
end
该程序只能得到一个相同值的结果,而其他的相同值的结果该如何获得呢?谢谢!我也试着改存贮的为数组,但是由于相同值的个数不同,总提示出错,不知该如何处理。请指教!谢谢

[ 本帖最后由 ChaChing 于 2009-7-12 12:22 编辑 ]
发表于 2007-3-15 09:40 | 显示全部楼层
为何循环中不含有 f ?请先保证所帖程序没有错误

[ 本帖最后由 ChaChing 于 2009-7-12 12:23 编辑 ]
 楼主| 发表于 2007-3-15 10:03 | 显示全部楼层
我只是先找出a中的相同值所在的位置,然后再找对应的f值,所以还没f,在这一步就已经遇到问题,所以就被迫停了下来。请谅解。
发表于 2007-3-15 10:05 | 显示全部楼层
原帖由 xinquan 于 2007-3-15 10:03 发表
我只是先找出a中的相同值所在的位置,然后再找对应的f值,所以还没f,在这一步就已经遇到问题,所以就被迫停了下来。请谅解。


哦,明白,以为你程序中写错了,呵呵。看看先

你的意思是最终找到 [3,4,6] 和 [5,7] ?

[ 本帖最后由 eight 于 2007-3-15 10:08 编辑 ]
 楼主| 发表于 2007-3-15 11:04 | 显示全部楼层
对,就是这个意思,但是我现在只能找出【5,7】,找不出全部来,请帮忙,谢谢!
发表于 2007-3-15 11:32 | 显示全部楼层
写了一个简单的:

  1. a = [1 2 5 1 6 3 2 1];
  2. b = unique(a);
  3. ind = false(length(b),length(a));
  4. for i = 1:length(b)
  5.     c = find(b(i) == a);
  6.     if length(c) > 1
  7.         ind(i,c) = true;
  8.     end
  9. end
  10. ind
复制代码

[ 本帖最后由 ChaChing 于 2009-7-12 12:24 编辑 ]
 楼主| 发表于 2007-3-15 13:03 | 显示全部楼层
谢谢楼上的,不过我觉得还有一个问题就是,如果a序列值比较长, 那么ind矩阵会超出MATLAB存储范围吧?另外按照您这个思路对应的f的值如何找出呢?
发表于 2007-3-15 13:50 | 显示全部楼层
原帖由 xinquan 于 2007-3-15 13:03 发表
谢谢楼上的,不过我觉得还有一个问题就是,如果a序列值比较长, 那么ind矩阵会超出MATLAB存储范围吧?


这的确是个值得探讨的问题,所以我才说“写了一个简单的”

另外按照您这个思路对应的f的值如何找出呢?


自己查查逻辑变量的用法吧
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-15 11:09 , Processed in 0.084006 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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