![]() |
[求助]for优化,结果不对
开始问题已经解决,
将原来的int8(m/w)和int8(n/w)改成了floor(m/w),floor(n/w) 谢谢大家关心,下面又出了个问题:lol: function g=BloSum(f,w) %f矩阵,w块大小 %m,n矩阵的长宽 [m,n]=size(f) g=zeros(floor(m/w),floor(n/w)) x1=1:floor(m/w) y1=1:floor(n/w) g(x1,y1)=mean(mean(f((x1-1)*w+1:x1*w,(y1-1)*w+1:y1*w))) end 我用矩阵f=[1 2 3 4;1 2 3 4;1 2 3 4;1 2 3 4]实验得到的结果是 ans = 1.5000 1.5000 1.5000 1.5000 应该是 ans = 1.5000 3.5000 1.5000 3.5000 现不知道原因,求助各位大大,,,, |
看这程序,x1和y1是向量吧,如果是向量,那么后边对矩阵f的引用就不对了。
|
我想用向量循环优化的形式替代for循环,象下面一样
n=1:10; x=sin(n*pi/10) n是向量,x也是向量 我程序里想对矩阵f实现二维的优化 |
用向量:向量的形式不能产生期望的矩阵下标序列
|
那应该怎么实现我说的功能呢,是不是只能用for写
|
是要求f矩阵中所有w阶主子式中对应元素的均值?
|
只是单纯分成w*w大小的矩阵,比如
f = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 分成 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 再求均值存到向量g中 结果是 g = 1.5000 3.5000 1.5000 3.5000 |
你是要算方塊化的平均嗎
有內建函數 f=[1 2 3 4;1 2 3 4;1 2 3 4;1 2 3 4]; g=blkproc(f,[2 2],'mean2'):smile: 不用的寫法 A=[1 2 3 4;1 2 3 4;1 2 3 4 ;1 2 3 4] ; g=reshape(mean([reshape(A(:,1:2:end),2,[]);reshape(A(:,2:2:end),2,[])]),size(A,1)/2,[]) |
谢谢,,,,:lol:
学习了 我还想知道,为什么我那样写结果不对呢,麻烦了,,,,, 写成 for i1=1:floor(m/w) for j1=1:floor(n/w) mi(x1,y1)=mean(mean(f((x1-1)*w+1:x1*w,(y1-1)*w+1:y1*w))); end end 就对了 |
[QUOTE=hu17889;7870]谢谢,,,,:lol:
学习了 我还想知道,为什么我那样写结果不对呢,麻烦了,,,,, 写成 for i1=1:floor(m/w) for j1=1:floor(n/w) mi(x1,y1)=mean(mean(f((x1-1)*w+1:x1*w,(y1-...[/QUOTE] 循环控制变量是x1和y1吧,在循环内x1和y1都是标量。 |
所有时间均为北京时间。现在的时间是 05:21。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.