How to quickly do the calculation?

조회 수: 4 (최근 30일)
Benson Gou
Benson Gou 2021년 6월 30일
편집: Matt J 2021년 7월 1일
Dear All,
I have a code to calculate an array using several arrays. The code is as follows:
Ieq1 = Haltmr(mmm(jbb2),IndBus(solvedbuses))*v(IndBus(solvedbuses));
Where Haltmr is a complex 6000x3000 sparse matrix, v is a complex 3000 column vector, mmm (for example, 20 rows in Haltmr) is a selected rows from Haltmr and jbb2 ( 5 rows in mmm) is the part of mmm, and IndBus is the order of columns in Haltmr, and solvebuses ( 15 indecies) is a part of the columns.
I am wondering if there is a faster way to do the calculation.
Thanks.
Benson
  댓글 수: 3
dpb
dpb 2021년 6월 30일
All depends on what the definitions of the quantities are -- are they variables or functions? It's indeterminate in isolation.
dpb
dpb 2021년 6월 30일
sparse saves memory; the cost is execution speed to decode.
If you have enough memory, you could try moving to full storage; H is "only" 138 MB on machines these days with GB memory.
I didn't try to see if could do something with the matrix algebra...

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2021년 7월 1일
편집: Matt J 2021년 7월 1일
This might be faster.
r=false(6000,1); r(mmm(jbb2))=1;
c=false(3000,1); c(IndBus(solvedbuses))=1;
Ieq1=Haltmr*sparse(v.*c);
Ieq1=Ieq1(r);

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Computations에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by