回 帖 发 新 帖 刷新版面

主题:帮我看看程序错在哪里

题目如下:
设计一个函数文件,要求输入一个任意方阵,该函数能统计出等于0元素的个数。

程序如下:
function a=num(b)
[m,n]=size(b)
for i=0:m
for j=0:n
    if (b(i,j)==0)
        a=0
        a=a+1;
    end
end
end
a
运行时出现如下错误:
?? Subscript indices must either be real positive integers or logicals.

Error in ==> C:\MATLAB6p5\work\num.m
On line 5  ==>     if (b(i,j)==0)
帮忙看看,谢了。

回复列表 (共3个回复)

沙发

兄弟,MATLAB里面,数组的下限是1,而不是0,应该是
for i=1:m
for j=1:n

板凳

除了楼上说的一个原因外,你这个程序还有个软错误。
for i=1:m
for j=1:n
    if (b(i,j)==0)
        a=0        %要把初始化语句放在循环外,否则这样你得出的结果只能是1
        a=a+1;
    end
end
end

其实在matlab里实现这个功能用不着这么麻烦,就一句就可以解决
function a=num(b)
a=sum(sum(b==0));

3 楼

function a=num(b)
[m,n]=size(b)
a=0   
for i=1:m
for j=1:n
    if (b(i,j)==0)
        a=a+1;
    end
end
end

我来回复

您尚未登录,请登录后再回复。点此登录或注册