Is it possible to declare the matrix is symmetric in advance before multiplication?

1 回表示 (過去 30 日間)
Hello,
I have a code with many large matrix multiplication and the results are all symmetric,
for example, AtA=A'*A, where A is a large real-valued matrix, and obviously AtA is a symmetric matrix.
I know in famous convex solver such as CVX which is able to declare the variable is symmetric in the beginning.
Is it possible to declare that AtA is a symmetric matrix in advance like CVX to make MATLAB computation more faster?
Thank you in advance.

採用された回答

James Tursa
James Tursa 2017 年 1 月 9 日
編集済み: James Tursa 2017 年 1 月 9 日
No you cannot declare this explicitly. However, in some cases MATLAB will detect that there is a symmetric multiply and call symmetric BLAS matrix multiply library code instead of generic BLAS matrix multiply library code. So this speed advantage is already built into MATLAB when it can be detected. E.g., for your example:
>> A = rand(5000);
>> B = rand(5000);
>> timeit(@()A.'*B)
ans =
1.5621
>> timeit(@()A.'*A)
ans =
1.0122
For the A.'*B case, the generic BLAS matrix multiply library routine was called in the background. But in the A.'*A case, MATLAB has recognized the symmetric matrix multiply and has called a different BLAS matrix multiply routine to take advantage of this fact (as clearly evidenced by the significant timing improvement).
  2 件のコメント
Gasper Hsieh
Gasper Hsieh 2017 年 1 月 10 日
Dear James Tursa:
Thank you for your detailed answer, this is my first time to learn BLAS, and I just surveyed some information about this library, does the BLAS originally install in the MATLAB? My Matlab version is 8.1.0.604 (R2013a), sorry for asking this simple question, thank you for your reply again.
Walter Roberson
Walter Roberson 2017 年 1 月 10 日
BLAS is automatically used by MATLAB; so is LAPACK or MKL (Intel's Math Kernel Library)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by