xinquan 发表于 2007-3-14 21:57

相同值下标索引问题

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

[ 本帖最后由 eight 于 2007-3-15 10:42 编辑 ]

eight 发表于 2007-3-14 22:03

如何把所有满足条件的都保存下来呢

用数组而非单变量存储

ps:你的问题最好用一个简单例子来说明

xinquan 发表于 2007-3-15 09:08

如下面所示的例子,我写的前一部分程序如下:
function p=fuping
a=; f=; n=length(a);
for i=1:n
    p=find(a==a(i));
end
该程序只能得到一个相同值的结果,而其他的相同值的结果该如何获得呢?谢谢!我也试着改存贮的为数组,但是由于相同值的个数不同,总提示出错,不知该如何处理。请指教!谢谢

[ 本帖最后由 ChaChing 于 2009-7-12 12:22 编辑 ]

eight 发表于 2007-3-15 09:40

为何循环中不含有 f ?请先保证所帖程序没有错误

[ 本帖最后由 ChaChing 于 2009-7-12 12:23 编辑 ]

xinquan 发表于 2007-3-15 10:03

我只是先找出a中的相同值所在的位置,然后再找对应的f值,所以还没f,在这一步就已经遇到问题,所以就被迫停了下来。请谅解。

eight 发表于 2007-3-15 10:05

原帖由 xinquan 于 2007-3-15 10:03 发表
我只是先找出a中的相同值所在的位置,然后再找对应的f值,所以还没f,在这一步就已经遇到问题,所以就被迫停了下来。请谅解。

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

你的意思是最终找到 和 ?

[ 本帖最后由 eight 于 2007-3-15 10:08 编辑 ]

xinquan 发表于 2007-3-15 11:04

对,就是这个意思,但是我现在只能找出【5,7】,找不出全部来,请帮忙,谢谢!

eight 发表于 2007-3-15 11:32

写了一个简单的:
a = ;
b = unique(a);
ind = false(length(b),length(a));
for i = 1:length(b)
    c = find(b(i) == a);
    if length(c) > 1
      ind(i,c) = true;
    end
end
ind


[ 本帖最后由 ChaChing 于 2009-7-12 12:24 编辑 ]

xinquan 发表于 2007-3-15 13:03

谢谢楼上的,不过我觉得还有一个问题就是,如果a序列值比较长, 那么ind矩阵会超出MATLAB存储范围吧?另外按照您这个思路对应的f的值如何找出呢?

eight 发表于 2007-3-15 13:50

原帖由 xinquan 于 2007-3-15 13:03 发表
谢谢楼上的,不过我觉得还有一个问题就是,如果a序列值比较长, 那么ind矩阵会超出MATLAB存储范围吧?

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

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

自己查查逻辑变量的用法吧
页: [1]
查看完整版本: 相同值下标索引问题