學習了matlab了之後發現程式設計的技巧很重要,掌握了正確的程式設計技巧之後計算速度會加快非常多,尤其是面對一些規模龐大的問題,可以減輕計算機的負擔。
我了解到優化matlab**的一種方法是對於迴圈內的大陣列進行預先定義、分配空間。
用兩個例子可以對比分配記憶體的區別
ticx=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通過一系列實踐就可以看出不同的程式設計方式對於matlab計算速度的影響了,可見演算法的重要性;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裡有關於集合運算的函式有如下的一些 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 求級數 的和函式,並求...