主题:for循环中如何记录每次运算结果
mywork
[专家分:0] 发布于 2009-08-28 09:09:00
大家好:
我是一名新手,现在想要结算一个矩阵。要依次代入25组数据进行计算,用for循环的话,不知道怎么把每次计算的结果给迭加起来,因为要算去平均值。
请各位大哥大姐帮帮小弟,谢谢了!
回复列表 (共6个回复)
沙发
chianelxie [专家分:670] 发布于 2009-08-28 09:24:00
结算一个矩阵是什么意思?
板凳
mywork [专家分:0] 发布于 2009-08-28 09:30:00
就是L=pinv(B)*W,这里B和W有25组值,每次计算的数据最终要去平均值。
3 楼
jianadadexue [专家分:0] 发布于 2009-09-03 19:18:00
俺也是新手,你看看这个吧!
matlab中如何计算一个区域的像素平均值
一般是用移动窗口法。这种计算像素平均值的手段通常是用在均滑模糊上。
先设定窗口边长,假设正方形窗口为x。 然后让这个窗口按步长值为1来在图片区域左上到右下移动。每移动一格,就计算窗口中所有像素值加起来再除以x的平方。然后遍历全图。 一般会把均值重新给窗口中点值。
先把一副灰度图象myPicture.jpg图像放到你当前工作目录下,然后直接加载:
% 本程序的计算一副图象矩阵中左上角3*3个像素的平均值,你可以比猫画虎地按照需要改区域。
I=imread('myPicture.jpg'); %加载图像并存储在I变量
startX=1; % 看你选多大区域,这是起始点横坐标,可以改变它
startY=1; % 看你选多大区域,这是起始点纵坐标,可以改变它
endX=3; % 看你选多大区域,这是终止点横坐标,可以改变它
endY=3; % 看你选多大区域,这是终止点纵坐标,可以改变它
pixelSum=0; % 像素之和初始化为0
count= 0; % 记录像素区域个数,但也可以用以上坐标计算
for i=startX:endX
for j=startY:endY
pixelSum=pixelSum+int16(I(i,j)) %连加区域内各个像素
count=count+1;
end
end
average=pixelSum/count % 得到平均值
4 楼
永恒的回忆 [专家分:810] 发布于 2009-09-05 18:19:00
楼上的那段干嘛用循环呢,即不简洁,速度又慢
那段两层循环可以简洁写成这样:
I=I(:);
pixelSum=sum(I);
count=length(I);
5 楼
Neptune_zx [专家分:10] 发布于 2009-12-18 21:46:00
使用sum(pinv(B).*W)即可,不必使用循环,这里B,W均为含25个元素的行向量或者列向量
6 楼
Neptune_zx [专家分:10] 发布于 2009-12-18 21:47:00
注意是.*不是*,多了个点
我来回复