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的矩阵下标存在数据范围的问题么?求大神指教 展开
我申请了矩阵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的矩阵下标存在数据范围的问题么?求大神指教 展开
3个回答
展开全部
我直接复制你的代码, 运行没有问题。
可能你中间处理的时候出了问题,可否把中间代码贴出来。
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=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),看看循环之前这个矩阵多大
另外,你最好把程序运行错误的提示帖上来,看看是什么原因
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同样的问题我也遇到过 可能是Weight(i,j)维数太多了吧 我也不太清楚 我之前做过一个用多维数组记录一区域内像素值 用到的跟你这个差不多 也是要定义 很大才能正常 用
不过我认为你的也有可以改进的 不知道你用不用的上就是
cAB=cAB+Weight(i,j);
上面这行 每循环一次都要加一次 会很浪费时间 你可以看下join这个函数 刚开始没觉得什么 后来才发现 用这个函数 速度神速.....
不过我认为你的也有可以改进的 不知道你用不用的上就是
cAB=cAB+Weight(i,j);
上面这行 每循环一次都要加一次 会很浪费时间 你可以看下join这个函数 刚开始没觉得什么 后来才发现 用这个函数 速度神速.....
追问
对的,我现在也是觉得这个程序跑起来速度非常慢,想要改进,刚才搜索join函数,发现很少有介绍的,不知可否稍微介绍一下?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0+一个矩阵。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询