0
$\begingroup$

Recently, I studied A research paper where author has compared his proposed method with several other existing method on a randomly sigular matrices with fixed condition number. My question is can we generate a random matrices with desired condition number using matlab?

Here is the link of paper: An improved method for the computation of the Moore-Penrose inverse matrix, table 3

Please clarify my doubt. I would be very much thankful to you.

$\endgroup$
  • $\begingroup$ I am sorry I don't know how to insert hyperlink. I am giving here arxiv.org/pdf/1102.1845.pdf $\endgroup$ – srijan Sep 18 '12 at 13:12
  • $\begingroup$ I think the question has a little problem. Singular matrices have at least one singular value equals zero. $\endgroup$ – Seyhmus Güngören Sep 18 '12 at 14:23
4
$\begingroup$

Matrices in Table 3 are well-known matrices which are close to singular. The condition number is defined as the ratio between the maximal and the minimal singular values. In order to generate a matrix with a desired condition number, you can use SVD decomposition and modify the matrix with the singular values:

nr=4; %Number of rows
nc=5; %Number of columns
CondNumb=10*sqrt(2); %Desired condition number
A=randn(nr,nc);
[U,S,V]=svd(A);
S(S~=0)=linspace(CondNumb,1,min(nr,nc));
A=U*S*V';

Regards, Fernando

$\endgroup$
  • $\begingroup$ Thanks dear it is really helpful to me. I have few queries please clarify me. I didn't get this : CondNumb=10*sqrt(2). Also how to modify the matrix with the singular vectors. I am sorry for my silly question. $\endgroup$ – srijan Sep 18 '12 at 15:46
  • 1
    $\begingroup$ You are welcome! CondNumb=10*sqrt(2) is just an example. For instance, if you want a condition number of 1000, you have to set CondNumb=1000. Regarding the modification of the matrix with the singular vectors, it was an error. I was refering to the matrix of singular values S. Modifying the orifinal matrix S with the instruction S=diag(linspace(CondNumb,1,N)), allows you to change the condition number. Hope this helps $\endgroup$ – Fernando Domene Sep 19 '12 at 9:07
  • $\begingroup$ Thanks for your answer. Your suggested method is working for square matrices but I want to use that for rectangular matrices. Whenever I am running the code it is showing error for S. Error is matrix dimension is not agree. I am unable to aplly proper code to make it rectangular. This is my last question from you. Please help me. $\endgroup$ – srijan Sep 19 '12 at 23:37
  • 1
    $\begingroup$ You are welcome! I edit the original code for rectangular matrices. Hope it helps. $\endgroup$ – Fernando Domene Sep 20 '12 at 12:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.