声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 882|回复: 3

[综合讨论] 能否优化这两句程序

[复制链接]
发表于 2009-7-9 13:26 | 显示全部楼层 |阅读模式

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

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

x
编程时碰到一个问题,D1和De是全局变量,下面这两句是写在一个函数sub_pinpian里的语句,该函数被主程序main调用多次,最终得到De供以后的程序用。我想弄明白两个问题:
一、能否不用循环,充分发挥matlab的数组强大优势,这样可以节省时间,提高效率
二、能否不用定义全局变量,而是同过变量传递达到目的,因为,听大家说定义全局变量很容易出错。

%主程序main
N1=bitshift(1,15);
global D1 De;
D1=zeros(1,N1);De=zeros(1,N1);
....
for u=0:19
     De=sub_pinpian(xa,pianyi)
end
....
....

%子函数sub_pinpian
function  De=sub_pinpian(xa,pianyi)
global D1 De;
%省略一部分代码
...
...

for u=7:-1:0
     for p=0:127
     D1(p+1+(7-u)*16)=D1(p+1+(7-u)*16)+abs(DA1(u*256+2*p+1))+abs(DA1(u*256+2*p+2));
     end
end

%De=...De通过D1的一系列运算得到
...
...
希望师兄师姐师弟师妹们能帮助我。谢谢啦
回复
分享到:

使用道具 举报

发表于 2009-7-9 14:45 | 显示全部楼层
function  [D1 De]=sub_pinpian(xa,pianyi,D1,De)
不知道子函数这样定义可不可以解决LZ第二个问题...

评分

1

查看全部评分

发表于 2009-7-9 18:50 | 显示全部楼层
for p=0:127
     D1(p+1+(7-u)*16)=D1(p+1+(7-u)*16)+abs(DA1(u*256+2*p+1))+abs(DA1(u*256+2*p+2));
end
应该可以改成
D1((1:128)+7-u)=……

评分

1

查看全部评分

 楼主| 发表于 2009-7-10 06:43 | 显示全部楼层
谢谢波波球和friendchj:@) it's very nice of you
我不知道形参和返回值可以用同一变量,:@$ ,学习了,谢谢你!
关于循环的那两句,friendchj给的建议我今天试试。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-7-1 10:55 , Processed in 0.186747 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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