Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-04-02, 21:18   #1
hu17889
初级会员
 
注册日期: 2008-04-02
年龄: 38
帖子: 7
声望力: 0
hu17889 正向着好的方向发展
默认 [求助]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
现不知道原因,求助各位大大,,,,
hu17889 当前离线   回复时引用此帖
旧 2008-04-03, 11:18   #2
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

看这程序,x1和y1是向量吧,如果是向量,那么后边对矩阵f的引用就不对了。
watcher 当前离线   回复时引用此帖
旧 2008-04-03, 12:37   #3
hu17889
初级会员
 
注册日期: 2008-04-02
年龄: 38
帖子: 7
声望力: 0
hu17889 正向着好的方向发展
默认

我想用向量循环优化的形式替代for循环,象下面一样
n=1:10;
x=sin(n*pi/10)
n是向量,x也是向量
我程序里想对矩阵f实现二维的优化
hu17889 当前离线   回复时引用此帖
旧 2008-04-03, 15:23   #4
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

用向量:向量的形式不能产生期望的矩阵下标序列
watcher 当前离线   回复时引用此帖
旧 2008-04-03, 17:35   #5
hu17889
初级会员
 
注册日期: 2008-04-02
年龄: 38
帖子: 7
声望力: 0
hu17889 正向着好的方向发展
默认

那应该怎么实现我说的功能呢,是不是只能用for写
hu17889 当前离线   回复时引用此帖
旧 2008-04-03, 17:45   #6
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

是要求f矩阵中所有w阶主子式中对应元素的均值?
watcher 当前离线   回复时引用此帖
旧 2008-04-03, 18:02   #7
hu17889
初级会员
 
注册日期: 2008-04-02
年龄: 38
帖子: 7
声望力: 0
hu17889 正向着好的方向发展
默认

只是单纯分成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
hu17889 当前离线   回复时引用此帖
旧 2008-04-03, 19:54   #8
fgabertb
普通会员
 
注册日期: 2008-03-25
年龄: 40
帖子: 58
声望力: 19
fgabertb 正向着好的方向发展
默认

你是要算方塊化的平均嗎
有內建函數

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,[])
fgabertb 当前离线   回复时引用此帖
旧 2008-04-04, 15:52   #9
hu17889
初级会员
 
注册日期: 2008-04-02
年龄: 38
帖子: 7
声望力: 0
hu17889 正向着好的方向发展
默认

谢谢,,,,: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
就对了
hu17889 当前离线   回复时引用此帖
旧 2008-04-04, 16:46   #10
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

引用:
作者: hu17889 查看帖子
谢谢,,,,: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-...
循环控制变量是x1和y1吧,在循环内x1和y1都是标量。
watcher 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
【求助】Matlab 2007b安装问题 1415926 MATLAB论坛 1 2008-11-23 22:13
问高手画三维图的问题 rocflying MATLAB论坛 0 2008-05-23 10:57
【求助】怎么去拟合这个曲线的函数 ying081 MATLAB论坛 3 2008-03-25 21:23
【求助】这个微分方程怎么写成函数文件呢? grasszhang MATLAB论坛 0 2007-08-30 15:25
【求助】m文件不能正常运行? weilianggang MATLAB论坛 2 2007-06-11 02:19


所有时间均为北京时间。现在的时间是 01:15


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.