相关疑难解决方法(0)

编写MATLAB代码的好习惯?

我想知道编写结构良好的代码的基本原则和礼仪.

python matlab structure

45
推荐指数
7
解决办法
3430
查看次数

为什么在脚本"预热"后Matlab运行得更快?

我注意到第一次运行脚本时,它比第二次和第三次需要更多的时间1.没有解释的情况下,在这个问题中提到 "热身" .

为什么代码在"预热"后运行得更快?

我不在clear all调用2之间,但每个函数调用的输入参数都会改变.有人知道为什么吗?


1.我在本地获得了许可证,因此这不是与许可证检查有关的问题.

实际上,如果我,行为不会改变clear all.

benchmarking matlab warm-up

19
推荐指数
1
解决办法
2776
查看次数

如何在没有for循环的matlab中计算这个

由于matlab在执行循环时速度很慢,我通常会为所有代码避免循环,并将它们转换为矩阵计算,这会很快.但这是一个我无法找到聪明方法的问题:

我有焦虑的矩阵

A=[a1,a2,a3,...,an], 
Run Code Online (Sandbox Code Playgroud)

这里a1,a2,a3 .... an是矩阵的列.

另一个nxn矩阵

B=[b1,b2,b3,...,bn], 
Run Code Online (Sandbox Code Playgroud)

类似地,b1,b2,b3 ......也是B的列.

还有焦虑矩阵M.

我想计算nxn矩阵

C=[c1,c2,c3,...,cn], 

thus (M+diag(ai))*ci = bi.
Run Code Online (Sandbox Code Playgroud)

亦即

ci = (M+diag(ai))\bi.
Run Code Online (Sandbox Code Playgroud)

我知道没有for循环的一种方法是:

C(:)=( blkdiag(M)+diag(A(:)) )\B(:).
Run Code Online (Sandbox Code Playgroud)

但这会做太多计算而不是需要.

任何智能解决方案 你可以假设计算中没有奇点问题.

matlab for-loop matrix

5
推荐指数
1
解决办法
1515
查看次数

如何在MATLAB中精确分析/基准算法?

该算法一次又一次地重复相同的事情.我希望在每次试验中得到相同的时间,但我在四次相同的试验中得到了非常意想不到的时间

在此输入图像描述

我预计曲线是相同的,但它们的行为完全不同.原因可能在于tic/toc精度.

  • 我应该在Matlab中使用什么样的分析/计时工具?
  • 我在下面的代码中做错了什么?tic/toc剖析的可靠性如何?
  • 无论如何要保证一致的结果?

算法

A=[];
for ii=1:25
    tic;
    timerval=tic;
    AlgoCalculatesTheSameThing();    
    tElapsed=toc(timerval);
    A=[A,tElapsed];   
end
Run Code Online (Sandbox Code Playgroud)

algorithm matlab profiling timing

1
推荐指数
1
解决办法
505
查看次数