首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得错误: dlen = uint32(0);

获得错误: dlen = uint32(0);
EN

Stack Overflow用户
提问于 2014-11-06 16:09:46
回答 1查看 31关注 0票数 0

我不知道为什么,但我发现了这个错误:

代码语言:javascript
复制
Error in mr_lsbpex (line 3)
dlen = uint32(0) ; 

Output argument "a" (and maybe others) not assigned during call to "E:\path\mr_lsbpex.m>mr_lsbpex"

我在matlab环境中测试了"dlen = uint32(0) ;“(除了这个函数之外),一切都很好。这是我的代码:

代码语言:javascript
复制
function a = mr_lsbpex ( r, p ) 
% extract from an array
dlen = uint32(0) ; 
s = size (r) ; 

rnd = rand (s(1),s(2)) ; 
rd = 32 ; 
rl = s(2) ; 

for i=1:s(2)
    if rnd(1,i)<rd/rl 
        d = bitget (round(r(1,i)/p),1); 
        dlen = bitset (dlen,rd,d); 
        rd = rd -1 ; 
    end
    rl = rl -1 ;
end

if (dlen > 10000000 )
    clear a ; 
    return ;
end

a = uint8(zeros(dlen,1)) ; 
rd = double(dlen * 8) ; 
rl = double(s(1)*s(2)-s(2)) ; 
for i=2:s(1)
    for j=1:s(2)
        if rnd(i,j)<rd/rl
            d = bitget (round(r(i,j)/p) ,1) ; 
            a = z_set_bit (a,rd,d) ; 
            rd = rd - 1 ;
        end
        rl = rl - 1 ; 
    end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-06 16:18:17

记住:a需要返回ALLWAYS

错误不在这一行中,而是在“整体”函数本身中。

你的问题是Matlab认为a不会被创建。实际上,在某些情况下,它可能不会被创建。

函数开始时的下面一行应该可以做到这一点

代码语言:javascript
复制
a=0; % well, or a=NaN; or whatever you want to return 

另外,不要在clear a中使用if (dlen > 10000000 )

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26784044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档