| 查看: 2347 | 回复: 8 | ||
dlwxtj铁杆木虫 (著名写手)
|
[求助]
for循环语句的加速优化求助!已有3人参与
|
|
此程序为一段图像处理算法(大小为960*1280像素的图片),想通过改变逐个像素的方法来改变图像,但运行速度极慢,想请高手帮忙优化下,不胜感激!!! for a=1:94; d(a)=1; end for r=1:1280; for k=1:960; m1(k,r)=0; for a=1:94; if map(k,r)==1 & a<=84; %其中map为一幅图像的二进制图像。 mm1(a)=d(a)*50; else mm1(a)=d(a)*20; end m1(k,r)=m1(k,r)+mm1(a); end end end i=0; for r=1:1280; for k=1:960; M1(i+k,i+k)=m1(k,r); end i=i+k; end |
» 猜你喜欢
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
2025冷门绝学什么时候出结果
已经有6人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有7人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有8人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有5人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求助,怎样去掉双重for循环加快程序运行
已经有10人回复
什么人可以考注化?
已经有37人回复
求助Matlab批处理for语句循环
已经有5人回复
matlab中如何通过for语句得到已有矩阵的部分数据
已经有3人回复
跪求matlab的for循环语句的编写
已经有20人回复
大家都用什么fortran编辑器,推荐一下,最好是能加亮或修改语句颜色的
已经有15人回复
2011年注册化工工程师基础考试大纲
已经有25人回复
【求助】注册化工工程师的报考条件,报考时间以及考试科目都是什么?
已经有26人回复
【求助】aspen中用到fortran语句
已经有15人回复
reko34
木虫 (正式写手)
- 应助: 117 (高中生)
- 金币: 4794.2
- 散金: 22
- 红花: 12
- 帖子: 780
- 在线: 417.4小时
- 虫号: 3055206
- 注册: 2014-03-15
- 性别: GG
- 专业: 机械测试理论与技术
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
dlwxtj: 金币+10, ★★★很有帮助, 谢谢! 2014-05-09 16:34:26
ben_ladeng: 金币+1, 欢迎常来 2016-02-26 17:20:00
感谢参与,应助指数 +1
dlwxtj: 金币+10, ★★★很有帮助, 谢谢! 2014-05-09 16:34:26
ben_ladeng: 金币+1, 欢迎常来 2016-02-26 17:20:00
|
LZ是不是代码没贴全?从给出的部分看,全1向量d没存在意义,定义后没改过数值,那么mm1(a)=50没必要*d(a)。就算有用也不需要用for定义,用d=ones(94,1)就行了。 最后一段,M1是个尺寸大得吓人的方阵,行(列)数是1到960的累加,先把这个累加数算出来,循环前用全0或全1之类的命令定义出一个临时的M1可以加速,否则每循环1次MATLAB都因为矩阵尺寸改变要重新分配一遍内存地址。 |
2楼2014-05-06 13:37:19
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件

3楼2014-05-06 18:36:02
dnp
荣誉版主 (知名作家)
小木虫浪子
- 应助: 74 (初中生)
- 贵宾: 18.476
- 金币: 18802.9
- 散金: 2040
- 红花: 77
- 沙发: 6
- 帖子: 7303
- 在线: 593.6小时
- 虫号: 437184
- 注册: 2007-08-26
- 性别: GG
- 专业: 生物信息学
- 管辖: 有机交流
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
dlwxtj: 金币+10, ★★★很有帮助, 谢谢! 2014-05-09 16:35:13
ben_ladeng: 金币+5, 欢迎常来 2016-02-26 17:20:29
感谢参与,应助指数 +1
dlwxtj: 金币+10, ★★★很有帮助, 谢谢! 2014-05-09 16:35:13
ben_ladeng: 金币+5, 欢迎常来 2016-02-26 17:20:29
|
尽量改为向量化处理,比如: for a=1:94; d(a)=1; end 可以改为d(1:94)=1;如果你d在前面未定义,就直接用d=ones(1,94); for r=1:1280; for k=1:960; m1(k,r)=0; for a=1:94; if map(k,r)==1 & a<=84; %其中map为一幅图像的二进制图像。 mm1(a)=d(a)*50; else mm1(a)=d(a)*20; end m1(k,r)=m1(k,r)+mm1(a); end end end 可以改为: m1=zeros(1280,960);% if m1 has been defined previously, try m1(1:1280,1:960)=0; 下面的循环很麻烦,看不懂,自己考虑进行改进,其实不用这样的循环,如果没理解错的话,map里面有多少个1,就循环for a=1:94; ... ; end多少次,你可以直接算有多少个1,然后直接乘或者加就好了。 for r=1:1280 for k=1:960 for a=1:94 if map(k,r)==1 & a<=84; %其中map为一幅图像的二进制图像。 mm1(a)=d(a)*50; else mm1(a)=d(a)*20; end m1(k,r)=m1(k,r)+mm1(a); end end end |

4楼2014-05-07 13:22:35
dlwxtj
铁杆木虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 8715.9
- 散金: 228
- 帖子: 1505
- 在线: 554.2小时
- 虫号: 390183
- 注册: 2007-06-02
- 性别: GG
- 专业: 聚合物共混与复合材料
5楼2014-05-09 17:07:12
reko34
木虫 (正式写手)
- 应助: 117 (高中生)
- 金币: 4794.2
- 散金: 22
- 红花: 12
- 帖子: 780
- 在线: 417.4小时
- 虫号: 3055206
- 注册: 2014-03-15
- 性别: GG
- 专业: 机械测试理论与技术
6楼2014-05-09 17:18:12
dnp
荣誉版主 (知名作家)
小木虫浪子
- 应助: 74 (初中生)
- 贵宾: 18.476
- 金币: 18802.9
- 散金: 2040
- 红花: 77
- 沙发: 6
- 帖子: 7303
- 在线: 593.6小时
- 虫号: 437184
- 注册: 2007-08-26
- 性别: GG
- 专业: 生物信息学
- 管辖: 有机交流

7楼2014-05-09 17:21:53
dnp
荣誉版主 (知名作家)
小木虫浪子
- 应助: 74 (初中生)
- 贵宾: 18.476
- 金币: 18802.9
- 散金: 2040
- 红花: 77
- 沙发: 6
- 帖子: 7303
- 在线: 593.6小时
- 虫号: 437184
- 注册: 2007-08-26
- 性别: GG
- 专业: 生物信息学
- 管辖: 有机交流

8楼2014-05-09 17:24:43
dlwxtj
铁杆木虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 8715.9
- 散金: 228
- 帖子: 1505
- 在线: 554.2小时
- 虫号: 390183
- 注册: 2007-06-02
- 性别: GG
- 专业: 聚合物共混与复合材料
9楼2014-11-27 12:52:05













回复此楼
;