一个研究进化的模型,基本成型,可在运算中不定时的出现NaN.....
一个研究进化的模型,基本成型,可在运算中不定时的出现NaN,比如100次的迭代进化,最后在10次左右就因为NaN的出现终止了,望大牛指点,为什么会出现NaN的结果呢?附件已经添加了,直接打开main.m,运行就可以
里面generation表示已经迭代的次数,即繁衍代数
谢谢
本帖最后由 ChaChing 于 2011-8-7 21:00 编辑
怎没法复製LZ的错误!?
我的报错是 ??? Attempted to access P(1,1); index out of bounds because size(P)=.
Error in ==> main_creatA at 8
if x <= P(i,1)
Error in ==> main at 70
lan{1,i} = main_creatA(m,n,k,double(TEMP_P{1,i})); 您好,第一次发帖,下次注意
您知道这个报错是为什么么,这个程序的意图是模拟一种形式进化的,lan元胞是我想要的变量,可是那个NaN的产生影响到了我迭代的计算,经常是在gen变量(迭代次数)在10一下的时候就因为NaN的出现而终止了,但也有的时候能完成总共100次的迭代,很疑惑,求大牛帮助 回复 2 # ChaChing 的帖子
您好,第一次发帖,下次注意
您知道这个报错是为什么么,这个程序的意图是模拟一种形式进化的,lan元胞是我想要的变量,可是那个NaN的产生影响到了我迭代的计算,经常是在gen变量(迭代次数)在10一下的时候就因为NaN的出现而终止了,但也有的时候能完成总共100次的迭代,很疑惑,求大牛帮助 回复 2 # ChaChing 的帖子
哦对了,我的报错和您的一样,也是这个,产生的便面上的原因就是因为TEMP_P元胞为空,而TEMP_P元胞为空就是在NaN产生之后才出现的,我单步调试发现的这个现象,可是不知道为什么,感觉很有意思但解决不了,谢谢 看看P是多少了 是否保存了? 1.个人水平/专业/时间有限, 要看清LZ的程序, 真有点吃力
2.nan出现的可能不外乎0/0或inf/inf, 也就是"/"的地方需注意
3.find下, 共有四处有除号, 设些判断语句检查下, 发现在main_creatQ中即开始出现nan, 原因即整行(或整列)皆为零!
4.至於传入main_creatQ的lan cell所含矩阵整行(或整列)皆为零, 是否合理, 只得LZ的专业判断及往前追错了
回复 6 # yufeng 的帖子
您好,看看P的多少怎么理解?望解答 回复 7 # ChaChing 的帖子
您好,感谢您帮我查出这些问题,我继续去具体看看怎么出现的。
还有个小麻烦,请问我怎么对于调用的.m文件进行debug的检查?就是想一步一步的检查那种 回复 7 # ChaChing 的帖子
您好,感谢您帮我查出这些问题,我继续去具体看看怎么出现的。
还有个小麻烦,请问我怎么对于调用的.m文件进行debug的检查?就是想一步一步的检查那种 回复 8 # lxlxlxx 的帖子
再出错前程序加上P
看数值多少 回复 9 # lxlxlxx 的帖子
进入matlab后, 打开m文件, 不是就进入debug模式 !?
但LZ的程序牵涉许多循环, 一步一步执行实在不可行, 所以我是在几处猜测位置设些判断语句并设断点(如main_creatP)function P = main_creatP(m,n,A)
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
for i = 1:n
for j = 1:m
if sum(A(i,1:m))==0 %****************
disp('ppp'); %****************设断点
end %****************
P(i,j) = A(i,j)/sum(A(i,1:m));
%Q(j,i) = A(i,j)/sum(A(1:n,j));
end
end
end只要判断语句成立即停滞, 再各参数检查下
回复 11 # yufeng 的帖子
好的,我去试一试,谢谢您解答 回复 12 # ChaChing 的帖子
谢谢楼主,我去查查看,麻烦了
页:
[1]