matlab中替代for循环 10
clearall;clc;C=0;T=1;m=1;P=1;figure;fortau=-3:0.01:3;fun=@(t)((gaussian(t,tau,T,P,m,C...
clear all;
clc;
C=0;T=1;m=1;P=1;
figure;
for tau=-3:0.01:3;
fun=@(t) ((gaussian(t,tau,T,P,m,C)+gaussian(t,0,T,P,m,C)).*(gaussian(t,tau,T,P,m,-C)+gaussian(t,0,T,P,m,-C))).^2;
acf=integral(fun,-10,10);
plot(tau,acf);grid on;
hold on;
end
以上是一个计算脉冲自相关的函数编程,但是计算效率比较低,想要请问一下是不是可以将for循环替换掉,毕竟matlab里面最高效的是利用数组和矩阵,感激不尽! 展开
clc;
C=0;T=1;m=1;P=1;
figure;
for tau=-3:0.01:3;
fun=@(t) ((gaussian(t,tau,T,P,m,C)+gaussian(t,0,T,P,m,C)).*(gaussian(t,tau,T,P,m,-C)+gaussian(t,0,T,P,m,-C))).^2;
acf=integral(fun,-10,10);
plot(tau,acf);grid on;
hold on;
end
以上是一个计算脉冲自相关的函数编程,但是计算效率比较低,想要请问一下是不是可以将for循环替换掉,毕竟matlab里面最高效的是利用数组和矩阵,感激不尽! 展开
1个回答
展开全部
把画图的语句懂for循环里去掉,改成记录每次循环的结果,最后一起画。因为画图语句是无论如何不可能加速的
因为你要算积分,而且被积函数中只有一个参数tau是需要变化的,建议你另写一下函数:
fun0 = @(tau, t)(...); %写在for外面
fun = @(t)(fun(tau, t)); % 这个写在for里面
这样也许快一点
在前两步的基础上进一步去掉for。请参看integral函数的帮助文档(用doc integral),里面提到了同时积多个函数的写法。这一步优化已经可能需要改变gaussian函数的写法了,我没法再说详细。如果你愿意继续优化,可以联系我。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
黄先生
2024-12-27 广告
2024-12-27 广告
矩阵切换器就是将一路或多路视音频信号分别传输给一个或者多个显示设备,如两台电脑主机要共用一个显示器,矩阵切换器可以将两台电脑主机上的内容renyi切换到同一个或多个显示器上;迈拓维矩矩阵切换器种类齐全,性价比高,支持多种控制方式,为工程商采...
点击进入详情页
本回答由黄先生提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询