1-数据向量化及使用meshgrid函数
首先我们用func1生成一副图像,计算一下他的执行时间:
<pre class="prism-highlight prism-language-matlab">function f = twodsin1(A,u0,v0,M,N)
f = zeros(M,N);
for c = 1:N
v0y = v0 * (c - 1);
for r = 1:M
u0x = u0 * (r - 1);
f(r,c) = A * sin(u0x +v0y);
end
end
<pre class="prism-highlight prism-language-matlab">>> timeit(@() twodsin1(1,1/(4*pi),1/(4*pi),512,512))
ans =
0.0080
输出的图像是这样子的:
大概需要0.0080s来利用函数创建512*512的图像,在第二个版本中我们分析原理后利用meshgrid函数进行优化:
<pre class="prism-highlight prism-language-matlab">function f = twodsin2(A,u0,v0,M,N)
r = 0:M-1;
c = 0:N-1;
[C,R] = meshgrid(c,r);
f = A * sin(u0 * R + v0 * C);
meshgrid可以用于计算行列自动生成相加的矩阵,我们使用他来替代for循环,然后可以计算一下第二个函数的时间:
<pre class="prism-highlight prism-language-matlab">>> timeit(@() twodsin2(1,1/(4*pi),1/(4*pi),512,521))
ans =
0.0034
生成相同的图像仅仅使用了不到原来for循环不到一半的时间,这就是向量化,前一个函数是更加通俗易懂的,但事实后一个运算的快,这是matlab的增强性能的技术,作为一个技术老白,在之后的文章里不会涉及到,初步了解下即可。
版权声明
本文仅代表作者观点。
本文系作者发表,未经许可,不得转载。
上一篇:Qt实战之接金币小游戏 下一篇:openCV如何自定义编译
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。