声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1715|回复: 7

[编程技巧] 请教有关for循环改变为向量化运算

[复制链接]
发表于 2011-3-11 18:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
采用向量化运算可以大大提高运算速度,请问大家对于下面这个function 如何改变成向量化运算呢
请大家赐教

function a=half(k)
a=zeros(1,k);
a(1)=64;
for i=2:k
   a(i)=2*a(i-1);
end

回复
分享到:

使用道具 举报

发表于 2011-3-11 23:47 | 显示全部楼层
不是任何问题都可以用向量化运算解决的,否则估计matlab就会取消循环运算了
 楼主| 发表于 2011-3-12 00:44 | 显示全部楼层
我觉得可以用filter函数实现 等我实现了上传请大家指正
发表于 2011-3-12 01:02 | 显示全部楼层
回复 1 # huaijuliu 的帖子

function a=half(k)
aa=0:k-1; a=64*(2.^aa);
 楼主| 发表于 2011-3-12 01:05 | 显示全部楼层
本帖最后由 huaijuliu 于 2011-3-12 01:08 编辑
  1. filter([0,2],1,32*[1,2,4,8,16])

  2. ans =

  3. 0 64 128 256 512
复制代码

把第一个数去掉就可以了

评分

1

查看全部评分

发表于 2011-3-12 17:13 | 显示全部楼层
回复 5 # huaijuliu 的帖子

看到LZ使用filter, 著实钦佩又吓了一下, 想著怎会联想到数位滤波!?
好奇问下, 原本编程使用目的为何?:@)

filter([0,2],1,32*[1,2,4,8,16]);也就是b=[0,2]; a=1; x=32*[1,2,4,8,16];相当y(n)=2*x(n-1);
总感觉LZ逛了一大圈, 或许LZ可解惑下!:handshake
 楼主| 发表于 2011-3-12 17:44 | 显示全部楼层
回复 4 # ChaChing 的帖子

看到您的回复 突然想到了自己确实绕了一圈 其实就是想避免for循环
您这个就避免了for循环 感谢
发表于 2011-3-12 21:03 | 显示全部楼层
回复 7 # huaijuliu 的帖子

谢谢说明, 其实我本来是怕是否没看清或忽略了什麼...
说真的, LZ的那个方法, 个人还满欣赏的, 很有创意
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 11:29 , Processed in 0.072752 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表