鱼宝宝 发表于 2009-7-9 13:26

能否优化这两句程序

编程时碰到一个问题,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
functionDe=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=sub_pinpian(xa,pianyi,D1,De)
不知道子函数这样定义可不可以解决LZ第二个问题...

friendchj 发表于 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)=……

鱼宝宝 发表于 2009-7-10 06:43

谢谢波波球和friendchj:@) it's very nice of you
我不知道形参和返回值可以用同一变量,:@$ ,学习了,谢谢你!
关于循环的那两句,friendchj给的建议我今天试试。
页: [1]
查看完整版本: 能否优化这两句程序