大家看看我这个选阈值的小循环哪里错了 有更简单的万分感激
while T>T1|T<T1T=T1;
for i=1:m
for j=1:n
if bb(i,j)>T
R=R+bb(i,j);p++;
else C=C+bb(i,j);q++;
end
end
T1=R/(2*p)+C/(2*p);
end
??? R=R+bb(i,j);p++;
|
Error: Incomplete or misformed expression or statement.
T1给个初始值 不与T相等的
主要思路是 :先选择一个近似阈值T,将图象分割成两部分R和C, 计算R和C的均值, 然后取他们和的一半做为新的T, 重复上面的工作,直到 两部分的均值不再变化
高手 指点一下吧 小弟刚学 while T>T1|T<T1
T=T1;
for i=1:m
for j=1:n
if bb(i,j)>T
R=R+bb(i,j);p=p+1;
else
C=C+bb(i,j);q=q+1;
end
end
T1=R/(2*p)+C/(2*p);
end
end
首先MATLAB不是C++,它是基于C语言的。
高手 看下
:victory: xiexie给T1 初始的命令是什么 啊
int T=120; T1=110
while T>T1|T<T1
T=T1;
for i=1:m
for j=1:n
if bb(i,j)>T
R=R+bb(i,j);p=p+1;
else
C=C+bb(i,j);q=q+1;
end
end
T1=R/(2*p)+C/(2*p);
end
end
??? Error using ==> sym.maple
Error, (in int) wrong number (or type) of arguments
Error in ==> sym.int at 39
r = reshape(maple('map','int',f(:),x),size(f));
Error in ==> char.int at 9
y = int(sym(f),varargin{:});
[ 本帖最后由 ChaChing 于 2009-7-8 23:47 编辑 ] 原帖由 程序255 于 2007-4-7 10:47 发表
int T=120; T1=110
while T>T1|T<T1
T=T1;
for i=1:m
for j=1:n
if bb(i,j)>T
R=R+bb(i,j);p=p+1;
else
C=C+bb(i, ...
matlab定义变量的方式与C语言不同,把int去掉 谢谢 eight 我没看到你的回复 别放心上
=120; T1=110
while T>T1|T<T1
T=T1;
for i=1:m
for j=1:n
if bb(i,j)>T
R=R+bb(i,j);p=p+1;
else
C=C+bb(i,j);q=q+1;
end
end
T1=R/(2*p)+C/(2*p);
end
end
T1 =
110
??? Undefined function or variable "C".
楼上 C怎么 回事啊
[ 本帖最后由 ChaChing 于 2009-7-8 23:52 编辑 ] 原帖由 程序255 于 2007-4-7 11:57 发表
楼上 C怎么 回事啊
要赋初值
T=120; T1=110;
while T>T1|T<T1
T=T1;
C=0;
R=0;
for i=1:m
for j=1:n
if bb(i,j)>T
R=R+bb(i,j);p=p+1;
else
C=C+bb(i,j);q=q+1;
end
end
T1=R/(2*p)+C/(2*p);
end
end
你的循环条件太苛刻(两个浮点数要严格相等),只会陷入死循环,因此我作了一下修改,顺便去掉无谓的循环。至于T和T1的初值问题,自己调整一下吧。
T=120; T1=110;
iEpson = 1e-02;
while abs(T-T1)>=iEpson
T=T1;
temp = bb>T;
p = mean(bb(temp));
q = mean(bb(~temp)));
T1= (p+q)/2;
end
[ 本帖最后由 eight 于 2007-4-7 15:50 编辑 ] 好佩服 啊我有好多函数都不知道哎 想给你加人气 原帖由 程序255 于 2007-4-7 14:02 发表
好佩服 啊我有好多函数都不知道哎 想给你加人气
呵呵,过奖:loveliness: 。matlab跟C等语言有很大不同,你学了以后就会慢慢知道
至于加人气,普通会员也应该有权限吧,就是每个帖子右下角那个向上的绿色箭头
页:
[1]