Matalb for 語句 操作大矩陣 優化

2021-07-15 15:09:10 字數 828 閱讀 3047

在迴圈語句中對某個很大的矩陣做插入操作,由於迴圈次數過大,在後期的時候十分緩慢,具體**大概如下:

fori = 1:5000 i

n=x(i,1);

forj= 1:n

num = num +1;

s(num,1)=…;

s(num,2)=…;

s(num,3)=…;

endend

上述**執行時,當i大於200時開始出現明顯的執行緩慢,若直接執行可能需要超過5個小時。

我對上述**進行優化,首先計算25個i的迴圈,然後將結果儲存在乙個臨時變數st矩陣中,然後進行矩陣合併操作:s=[s; st],大大的加快了上述**的執行,執行時間2分鐘。**如下:

function st = subcount( a,x )

startdata = datenum('2015-01-01 02:45:17','yyyy-mm-dd hh:mm:ss');

sum=0;

for i = a:a+24

in=x(i,1);

for j= 1:n

建立子計算函式,計算從a開始的25個i。

s=;st=;

load('x.mat')

for i=1:200

st=subcount(1+(i-1)*25,x);

s=[s;st];

st=;

end

建立臨時矩陣st,然後不斷與s合併。結果大大的降低了執行時間。

總結:在做大量迴圈操作是,要考慮matlab矩陣運算的便利性,能做矩陣運算的就做矩陣運算,向上文所見,每執行25個i,合併一次矩陣,使用矩陣運算減少了記憶體和cpu的消耗。

mysql的操作語句 MySQL操作語句

資料定義語句ddl mysql注釋 建立表 create table user id int primary key auto increment,username varchar 50 userid varchar 50 gender varchar 5 default 男 birthday va...

mysql操作語句 mysql常用操作語句

2.列出資料庫 3.選擇資料庫 use databases name 4.列出資料表 5.顯示 列的屬性 show columnsfromtable name describe table name 6.匯出整個資料庫 my例如 my 7.匯出乙個表 mysqldump u user name p ...

js 九大語句

目錄 一 if 語句 二 do.while 語句 三 while 語句 四 for 語句 五 for.in 語句 六 label 語句 七 break 和 continue 語句 八 with 語句 九 switch 語句 if i 10 else if i 0 elsevar i 0 do whi...