24小时热门版块排行榜    

CyRhmU.jpeg
查看: 601  |  回复: 2

ldoop

铁杆木虫 (著名写手)


[求助] matlab 程序问题

各位大虾们帮忙看段程序,每次运行总是出现这样的错误:
Improper assignment with rectangular empty matrix.

Error in improved2 (line 56)
                         c(z)=find(divergentsp==b(z));
此时的值 b=4, c=[]
请问怎么调试,另外如何简化这段程序?万分感谢

源程序如下:
if abundance(species)==1
             if species~=S
                 b=find(divergentsp==species);
                 if isempty(b)~= 1
                     divergentsp(b)=b(1)-1;
                     divergentsp(b(1))=divergentsp(species);
                     for z=1:length(b)
                         c(z)=find(divergentsp==b(z));
                         divergentsp(divergentsp==b(z))=divergentsp(divergentsp==b(z))-1;
                         if isempty(c(z))~=1
                             for x=1:length(c(z))
                                 d(x)=find(divergentsp==c(x));
                                 divergentsp(divergentsp==c(x))=divergentsp(divergentsp==c(x))-1;
                                 if isempty(d(x))~=1
                                     for y=1:length(d(x))
                                         e(y)=find(divergentsp==d(y));
                                         divergentsp(divergentsp==d(y))=divergentsp(divergentsp==d(y))-1;
                                         if isempty(e(y))~=1
                                             for w=1:length(e(y))
                                                 f(w)=find(divergentsp==e(w));
                                                 divergentsp(divergentsp==e(w))=divergentsp(divergentsp==e(w))-1;
                                                 if isempty(f(w))~=1
                                                     g(u)=find(divergentsp(divergentsp==f(u)));
                                                     divergentsp(divergentsp==f(u))=divergentsp(divergentsp==f(u))-1;
                                                     if isempty(g(u))~=1
                                                         for q=1:length(g(u))
                                                             h(q)=find(divergentsp(divergentsp==g(q)))
                                                             divergentsp(divergentsp==g(q))=divergentsp(divergentsp==g(q))-1;
                                                             if isempty(h(q))~=1
                                                                 for l=1:length(h(q))
                                                                     divergentsp(divergentsp==h(l))=divergentsp(divergentsp==h(l))-1;
                                                                 end
                                                             end
                                                         end
                                                     end
                                                 end
                                             end
                                         end
                                     end
                                 end
                             end
                         end
                     end
                 end
             end
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

emanlee

木虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-03-21 01:42:44
你的程序我放到matlab中,编译说至少缺了一个end,我加上end之后。
再编译,Undefined function or variable 'species'. 该程序不完整不好调试。

如果要调试,可以设置断点,然后,一句一句运行程序。
2楼2012-03-20 18:13:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Love_Matrix

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-03-21 01:42:55
复制的把,需要15个end,少两个
3楼2012-03-20 21:21:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ldoop 的主题更新
信息提示
请填处理意见