声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

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

[编程技巧] 一个循环函数,但是运行起来,运算时间太长貌似死循环

[复制链接]
发表于 2007-10-25 09:02 | 显示全部楼层
内循环貌似没有意义。
回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2007-10-25 10:22 | 显示全部楼层

回复 #16 huihust 的帖子

function sum1 = freq(x)
sum1=0
l=length(x);
indices=[]
for i=1:l
   m=x(i);

  indices = find(x==m)
  sum1(i)=length(indices)
   
end

我把内循环去了,但是还是死机。我觉得1024个数据的运算量也不大啊,我想知道为什么就总过不去

[ 本帖最后由 eight 于 2007-10-25 10:23 编辑 ]
发表于 2007-10-25 10:26 | 显示全部楼层
先测试一下数据量少一点的时候会否死机,如果问题依旧,就设置断点调试一下吧

[ 本帖最后由 ChaChing 于 2009-11-21 16:38 编辑 ]

评分

1

查看全部评分

发表于 2007-10-25 10:26 | 显示全部楼层
虽然用过多次hist,不过研究没有这么深入。跟着学习:@P
 楼主| 发表于 2007-10-25 18:11 | 显示全部楼层
我搞出来了,但是不是MATLAB的函数,基本上还是C的办法,请大家继续关注啊我想用简单的函数
发表于 2007-10-25 18:20 | 显示全部楼层

回复 #20 zhangnan3509 的帖子

把你的办法弄上来瞧瞧
 楼主| 发表于 2007-10-25 18:53 | 显示全部楼层
[cols,rows]=size(b);
t=cols*rows;
N=ones(1,t);

k=0;
for  i=1:cols
    for j=1:rows
        k=k+1;
        a(k)=b(i,j);
    end
end

for i=1:t-1

    if i==1
       for j=i+1:t
          if a(j)==a(i)
              N(i)=N(i)+1;
              N(j)=0;
          end
      end
    end
   
  if i>1
         c=zeros(1,i-1);
         for k=1:i-1
             if a(k)==a(i)
                c(k)=1;
              end   
         end
         if max(c)~=1   
             for j=i+1:t
                 if a(j)==a(i)
                    N(i)=N(i)+1;
                    N(j)=0;
                 end
             end
         end
  end

这是主要部分的程序。

[ 本帖最后由 zhangnan3509 于 2007-10-25 18:54 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 20:43 , Processed in 0.059283 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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