- #1
irongreat
- 9
- 0
I've written a program in c language in terms of the GR SVD algorithm. To my dispointment,its performance is worse than the svd of matlab. I wish to get to know which algorithm the MATLAB used. Who may tell me? Thanks.
irongreat said:I've written a program in c language in terms of the GR SVD algorithm. To my dispointment,its performance is worse than the svd of matlab. I wish to get to know which algorithm the MATLAB used. Who may tell me?
doc svd
irongreat said:Oh, you said nothing.
Actually, shoehorn said everything. It was enough for you to figure out that, for real-valued matrices, MATLAB uses the DGESVD routine from LAPACK. That should have been enough of a clue for you to find the http://www.netlib.org/lapack/lug/" , which is probably what you were looking for.irongreat said:Oh, you said nothing.
irongreat said:You are not friendly,Shoehorn. I have read the MATLAB document. I know it use DGESVD... So I asked the question.
The SVD (Singular Value Decomposition) algorithm decomposes a matrix into three matrices, U, Σ, and V, where U and V are orthogonal matrices and Σ is a diagonal matrix. This decomposition allows us to simplify matrix operations and perform tasks such as dimensionality reduction and data compression.
The SVD algorithm is a computationally intensive process, especially for large matrices. Accelerating the algorithm can significantly reduce the time and resources needed to perform matrix operations, making it more practical for real-world applications.
There are several techniques for accelerating the SVD algorithm, including parallelization, matrix compression, and using randomized algorithms. Parallelization involves dividing the computation among multiple processors, while matrix compression reduces the size of the matrices involved. Randomized algorithms use a subset of the original matrix to approximate the SVD and can be significantly faster for large matrices.
The best technique for accelerating the SVD algorithm depends on the specific problem and the resources available. For example, if you have access to multiple processors, parallelization may be the most effective method. However, if you have limited resources, using a randomized algorithm may be a better choice. It is important to consider the trade-offs between accuracy and speed when choosing a technique.
While accelerating the SVD algorithm can greatly improve its speed and efficiency, there are some potential drawbacks to consider. For example, some acceleration techniques may sacrifice accuracy for speed, so it is important to evaluate the trade-offs carefully. Additionally, some techniques may only be effective for certain types of matrices or problems, so it is important to choose the right technique for your specific application.