matlab矩阵下标的问题

如下:我申请了矩阵WeightWeight=zeros(256,256);其大小应该为256*256,在后面的程序中我用到了这个矩阵,例如cAB=0;t1=100;t2=... 如下:
我申请了矩阵Weight
Weight=zeros(256,256);
其大小应该为256*256,在后面的程序中我用到了这个矩阵,例如
cAB=0;
t1=100;
t2=t1+1;
for i=1:t1
for j=t2:256
cAB=cAB+Weight(i,j);
end
end

运行时提示我j的范围不对,我把上限由256改为255可以正常运行。可是我明明申请了256*256的矩阵啊,谁能告诉我为什么?当然,我中间曾经对这个矩阵进行操作,改变了里面的值,但是矩阵的大小不会变啊。
汗,这个问题被我补充的乱七八糟。后来出了这么个问题,比如我有一幅图像img,求其最小灰度值minGray=min(min(img));假设求得minGray=32.
t=minGray;
cut=sum(sum(Weight(1:t+1,t+2:256)));
那么求得cut=0,这个结果是错误的。但是,如果用下列语句
t=32;
cut=sum(sum(Weight(1:t+1,t+2:256)));
则求得正确的结果,是一个正数。
后来经过修改,改为
“t=minGray;
t=double(t);
cut=sum(sum(Weight(1:t+1,t+2:256)));”
求得了正确的结果。难道matlab的矩阵下标存在数据范围的问题么?求大神指教
展开
 我来答
prkevin
2011-04-13 · TA获得超过6659个赞
知道小有建树答主
回答量:500
采纳率:100%
帮助的人:524万
展开全部
我直接复制你的代码, 运行没有问题。
可能你中间处理的时候出了问题,可否把中间代码贴出来。

Weight=zeros(256,256);
cAB=0;
t1=100;
t2=t1+1;
for i=1:t1
for j=t2:256
cAB=cAB+Weight(i,j);
end
end
更多追问追答
追问
中间部分还有很多,我自己也单独运行过这部分,确定是中间部分出了问题。但是我查看过处理后的Weight矩阵,还是256*256的,只不过存在零值。
追答
你在循环开始之前,可以添加一句:size(Weight),看看循环之前这个矩阵多大
另外,你最好把程序运行错误的提示帖上来,看看是什么原因
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友94abf75
2011-04-13 · TA获得超过245个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:202万
展开全部
同样的问题我也遇到过 可能是Weight(i,j)维数太多了吧 我也不太清楚 我之前做过一个用多维数组记录一区域内像素值 用到的跟你这个差不多 也是要定义 很大才能正常 用
不过我认为你的也有可以改进的 不知道你用不用的上就是
cAB=cAB+Weight(i,j);
上面这行 每循环一次都要加一次 会很浪费时间 你可以看下join这个函数 刚开始没觉得什么 后来才发现 用这个函数 速度神速.....
追问
对的,我现在也是觉得这个程序跑起来速度非常慢,想要改进,刚才搜索join函数,发现很少有介绍的,不知可否稍微介绍一下?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f74adf273
2011-04-13 · TA获得超过574个赞
知道小有建树答主
回答量:324
采纳率:0%
帮助的人:160万
展开全部
0+一个矩阵。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式