在学习了Java的基本编程之后,我发现在我当前的算法课程中,过渡到MatLab最困难的部分是避免循环。我知道在MatLab中有很多聪明的方法来向量化操作,但我的思想被循环思维“卡住”了,以至于我发现很难直观地看到我可以如何向量化代码。一旦我被展示了如何做到这一点,这对我来说是有意义的,但我自己就是看不到这一点。目前,我有以下代码用于查找在拉格朗日插值中使用的重心权重:
function w = barycentric_weights(x);
% The function is used to find the weights of the
% barycentric formula based
我正在处理512x512像素的图像;我已经编写了一个代码来分析我的图像,并使用预分配在10分钟内给出我所需要的具有尺寸(512,512,400)的矩阵的值。
我的问题是当我想要处理这些矩阵时:我花了几个小时才能看到结果,我想实现一些脚本,用更少的时间做我想做的事情。你能帮帮我吗?
% meanm is a matrix (512,512,400) that contains the mean of every inputmatrix
% sigmam is a matrix (512,512,400) that contains the std of every inputmatrix
%
我猜一定有一种算法可以最有效地解决我的问题,但我还没有找到它。我的问题是计算A,Prob(A)的离散分布。使用条件概率,我们知道: Prob(A)=Prob(A|B,C,D)*Prob(B|C,D)*Prob(C|D)*Prob(D) A,B,C,D是相关的,我只知道上面每一项的表达式。所以在我的代码中,我使用了4层for循环:
Solution=zeros(1,max_A) % store Prob(A=0,1,2,3,...max_A) in each cell.
for a =0 to max_A
for b=0 to max_B
我有下面的MATLAB程序来计算应变能。我想优化这段代码,因为这是我花在优化问题上的大部分时间。
stiffness = [6 x 6 matrix] % For a MWE, try magic(6)+magic(6)';
exx(:)=[100 x 100 matrix]; eyy(:)=[100 x 100 matrix]; %etc.
for idr = 1:length(r) % Index of r-location
for idt = 1:length(theta) % Index of theta location
e = [exx(
在Matlab中,我们使用来加快代码的速度。例如,这里有两种执行相同计算的方法:
% Loop
tic
i = 0;
for t = 0:.01:1e5
i = i + 1;
y(i) = sin(t);
end
toc
% Vectorization
tic
t = 0:.01:1e5;
y = sin(t);
toc
研究结果如下:
Elapsed time is 1.278207 seconds. % For loop
Elapsed time is 0.099234 seconds. % Vectorization
因此,矢量化代码的速度几乎要快13倍。实际上,如果我
这是我之前的的延续,我想要一个更快、更有效的替代标准Python循环的方法,后者对每一行的元素执行一些求和和乘法运算。
基本上,我有两个文件输入。一个是一组SNP的所有组合的列表,例如下面是3个SNP的组合:
AA CC TT
AT CC TT
TT CC TT
AA CG TT
AT CG TT
TT CG TT
AA GG TT
AT GG TT
TT GG TT
AA CC TA
AT CC TA
TT
我有不同版本的Bigquery脚本,即我遵循标准API 。我试图找出Matlab风格的时间或热身计时措施,以测试不同的脚本:
版本A:具有模块化代码的可读性强的代码
WITH a AS
(
SELECT * FROM SOURCE
),
a_ AS
(
SELECT ... FROM a
)
SELECT * FROM a_
版本B:带有子查询的非常不可读的代码,但声称是高效的
SELECT * FROM (SELECT * FROM (SELECT * FROM SOURCE))
如何在Google中对不同的标准SQL查询进行时间和基准测试?
可能要处理的观点
我是否需要像Ma
在Matlab中,我有两个m-by-n矩阵x和Y,带有n>m,我需要定义一个三维m-by m-n矩阵Z,它的分量可以计算为
for i=2:m
for j=i+1:m
for k=1:n
Z(i,j,k) = (Y(j-1,k)-Y(i-1,k))*X(j-1,k);
end
end
end
由于这些嵌套循环需要很长的计算时间,我一直在寻找一种使用矩阵乘法来定义矩阵Z的方法,但到目前为止我还没有成功。有什么建议吗?