声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: hyl2323

[编程技巧] 请教个避免用循环的编程技巧

[复制链接]
 楼主| 发表于 2007-12-13 17:53 | 显示全部楼层

试算如下,不要看主题贴了,主题帖没说清楚(sorry)

程序:
a=[10 30 50];
b=[30 50 70];
c=[1 2 3];
aa=10:10:70;
for i=1:length(aa)-1
    j=find(a<=aa(i) & b>aa(i));
    cc(i)=c(j);%由于实际应用中的特殊设置,此处的j只可能为一个数
end
cc(end+1)=c(end);
aa
cc
结果:
aa =
    10    20    30    40    50    60    70
cc =
     1     1     2     2     3     3     3
回复 支持 反对
分享到:

使用道具 举报

发表于 2007-12-14 11:03 | 显示全部楼层

回复 #16 hyl2323 的帖子

呵呵,老早就觉得这个问题有简单办法,果然找到!hoho~~

a=[10 30 50];
b=[30 50 70];
c=[1 2 3];
aa=10:10:70;
[m cc]= histc(aa,[10 30 50 80]);
cc

cc =
     1     1     2     2     3     3     3
>>

[ 本帖最后由 花如月 于 2007-12-14 11:09 编辑 ]

评分

1

查看全部评分

发表于 2007-12-15 11:09 | 显示全部楼层
高手好多啊,值得学习
 楼主| 发表于 2007-12-16 16:44 | 显示全部楼层
我回去用matlab试一试再来回帖哈!
 楼主| 发表于 2007-12-16 18:56 | 显示全部楼层
谢谢你,花如月,你用到的histc函数,确实是解决这个问题的关键,鉴于你没有用到c=[1 2 3],结果是巧合,我重写程序如下:
a=[10 30 50];
b=[30 50 70];
c=[11 22 33];
aa=10:10:70;
ab=[a b(end)];
[m cci]=histc(aa,ab);
cci(end)=cci(end)-1;
cc=c(cci);
aa
cc
结果:
aa =
    10    20    30    40    50    60    70
cc =
    11    11    22    22    33    33    33
问题已经解决,谢谢各位高才!

评分

1

查看全部评分

发表于 2007-12-16 22:20 | 显示全部楼层

回复 #20 hyl2323 的帖子

并非巧合,那个求的是标号。因为你原来的c里边的值恰好是[1 2 3],所以略去的一句。加上就可以了

a=[10 30 50];
b=[30 50 70];
c=[11 22 33];
aa=10:10:70;
[m cc]= histc(aa,[10 30 50 80]);
cc=c(cc)%加上这句就可以了:@)

cc =

    11    11    22    22    33    33    33

[ 本帖最后由 花如月 于 2007-12-16 22:21 编辑 ]

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 14:40 , Processed in 0.051992 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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