初學matlab程式設計運算速度的一些優化

2022-06-20 01:33:10 字數 1513 閱讀 8442

學習了matlab了之後發現程式設計的技巧很重要,掌握了正確的程式設計技巧之後計算速度會加快非常多,尤其是面對一些規模龐大的問題,可以減輕計算機的負擔。

我了解到優化matlab**的一種方法是對於迴圈內的大陣列進行預先定義、分配空間。

用兩個例子可以對比分配記憶體的區別

tic 

x=1;

x(2)=2;

x(3)=3;

x(4)=4;

x(5)=5;

toc

tic 

y=zeros(4,1);

y=1;

y(2)=2;

y(3)=3;

y(4)=4;

y(5)=5;

toc

前者花費的時間接近後者的十倍

利用tic與toc命令計算運算所用時間的方法,測試兩種程式設計的效率

通過下列**對比預先分配空間(t1)和執行中分配空間(t2)的運算速度

n = 50

;m = 1000

;for k = 1

:n a =;

tica(

1:m,1:m) = 3

;

for i = 1

:m a(i,i) =i;

endt1(k) =toc

a =;

ticfor j = 1

:m a(j,j) =j;

endt2(k) =toc

endt2(t1>10^9) =;

t1(t1>10^9) =;

plot([t1;t2]

')

通過下圖可以看出比較明顯的區別

之後我新增一條**      plot([t1;t2]'),讓資料更加直觀(上為t2,下為t1)

完整**

n = 50

;m = 1000

;for k = 1

:n a =;

tica(

1:m,1:m) = 3

;

for i = 1

:m a(i,i) =i;

endt1(k) =toc

a =;

ticfor j = 1

:m a(j,j) =j;

endt2(k) =toc

endt2(t1>10^9) =;

t1(t1>10^9) =;

plot([t1;t2]

')

通過一系列實踐就可以看出不同的程式設計方式對於matlab計算速度的影響了,可見演算法的重要性

Matlab的集合運算

matlab裡有關於集合運算的函式有如下的一些 intersect 集合交集 ismember 是否集合中元素 issorted 判斷集合是否排序 相關函式,sort 排序 setdiff 集合差集 setxor 集合異或 不在交集中的元素 union 兩個集合的並 unique 返回向量作為乙個集...

提高matlab執行速度的心得

首先說說matlab 與其他語言的差異 例如對於c或者c 來說,只要演算法的思想不變 採用的資料結構相同,不同人寫出來的語句在效率上一般不會產生太大的差別。所以,對於c來說,程式的好壞一般由演算法來決定。但是,在matlab中,同樣的演算法 同樣的結構 同樣的流程,如果採用的語句不一樣,在效率上就會...

MATLAB的數值運算與符號運算

1 求極限 lim x 0 cos x x 2 已知y tan 2 x x 2x 求y 3 求積分 0 sinx sin3 x dx 4 求二重定積分 5 將函式 進行因式分解。6 求函式在指定區間的極值 1 在 0,1 內的最小值。2 在 0,0 附近的最小值點和最小值。7 求級數 的和函式,並求...