標籤:

Matlab 2018a 比2017b有哪些改進?

http://app.go.mathworks.com/e/er?s_v1=22336elqem=2356058_EM_WW_DIR_17-12_R2018a-PRERELEASE-TAHs=646005169lid=15347elqTrackId=031f4ecb13f647218cf08176a882e999elq=27e89ed273814edba23da146346ecf5celqaid=22336elqat=1


大概看了一下"Release Notes", 最讓我眼前一亮的是:

? Startup: Increased speed of MATLAB startup time

? Execution Engine: Execute tight loops with scalar math faster

? Execution Engine: Improved performance for common programming patterns

MATLAB最近幾個版本不斷在提速, 不更新版本的話, "MATLAB循環速度慢"這種觀點很可能過時了.

我在使用的時候, 經常發現循環比矩陣運算快的例子, 預計以後這樣的例子會越來越多.

舉個例子(在R2017b上測試):

N = 1e2;
nloops = 10000;
x = randn(N, 1);
w = randn(N, 1);
tic;
for jj = 1:nloops
s1 = w" * x;
end
t1 = toc;

tic;
for jj = 1:nloops
s2 = 0;
for ii = 1:length(x)
s2 = s2 + w(ii) * x(ii);
end
end
t2 = toc;

t1/t2
s1 - s2

結果:

ans =
1.933815776861880
ans =
3.552713678800501e-15

循環運算速度是矩陣運算速度的1.9倍.

當然, 將N改成更大, 比如1e5, 那就是矩陣運算快了.

"common programming patterns"不知道指的是什麼, 等正式出來再看吧.


Trading Toolbox

? Wind Interface: Retrieve market data and execute trades through Wind Financial

Terminal

點贊,如果有


根據 @芷菡 在Matlab R2017b中的測試,我分別Matlab R2017b和Matlab R2018a Prerelease測試結果如下:

2017b的:

ans =
1.7083
ans =
4.4409e-16

2018a的:

ans =
4.1039
ans =
-8.8818e-16


simulink code inspector可以支持更多的code generation optimization


反對 @芷菡 的例子,向量規模才100就說循環比矩陣運算快?

R2017b,重複100萬次,向量維數從1到10萬,兩種寫法的比較:

」經常「被發現的循環比矩陣運算快的例子發生在1到100這種小規模上,而且這還是重複了100萬次的結果。大規模下循環的速度基本不可能比向量化運算快,不然的話那些矩陣運算庫早就沒人用了。所謂

Execution Engine: Execute tight loops with scalar math faster

我想並不是說比向量化運算快,而是說無法向量化的沒有那麼慢了。


挺好的,謝謝分享,前來學習。

Matlab 2018a 比2017b有哪些改進? - 知乎

https://www.zhihu.com/question/264332838


推薦閱讀:

為什麼很多計算機專業碩士生論文編程都是用MATLAB做的,僅僅是科學計算方面的優勢嗎?
為什麼同樣的C++函數,在matlab混合編程中調用,和直接在VS2010中調用,計算結果不一致?
用於數學建模 安裝matlab 2014 需要安裝哪些組件?
matlab的floor函數是否有bug?

TAG:MATLAB |