Force a linsolve solution
    3 views (last 30 days)
  
       Show older comments
    
    João Filipe Silva
 on 24 May 2018
  
    
    
    
    
    Edited: João Filipe Silva
 on 25 May 2018
            I have a state space system with a Cn matrix
Cn = [1.318e+5 0 0 0;0 0 1.318e+5 0]
and I need to transform it to a C matrix like
C = [1 0 0 0; 0 0 1 0]
The transformation can be made using the following: A = M*An*inv(M), B = M*Bn, C = Cn*inv(M)
I tried to use linsolve(C,Cn) to get my M matrix, which "works" ang gives me
M =
      131800           0           0           0
           0           0           0           0
           0           0      131800           0
           0           0           0           0
But this matrix M is non-invertible and the multiplication Cn*inv(M) returns a matrix of NaN values. I know that:
M =
        131800           0           0           0
             0           1           0           0
             0           0      131800           0
             0           0           0           1
is invertible and works perfectly for me in this case, but I can't find a way to calculate this M on Matlab.
Can I force the result of a linsolve to be invertible or is there another way to calculate this M so it gives me the one I desire?
0 Comments
Accepted Answer
  John D'Errico
      
      
 on 24 May 2018
        
      Edited: John D'Errico
      
      
 on 24 May 2018
  
      NO. You cannot force linsolve to return the solution you wish to see for a non-invertible matrix. At least not without doing some moderate linear algebra of your own to reduce the dimension of the problem. But if you knew how to do that, you would not be asking how to use linsolve here.
You can use a tool that is designed to survive on singular problems.
pinv(Cn)*Cn
ans =
   1     0     0     0
   0     0     0     0
   0     0     1     0
   0     0     0     0
3 Comments
  John D'Errico
      
      
 on 25 May 2018
				Trial and error? Seriously?
d = sum(Cn,1);
d(d == 0) = 1;
M = diag(d);
M
M =
      131800           0           0           0
           0           1           0           0
           0           0      131800           0
           0           0           0           1
Since you have not told me anything significant about what your expectations for Cn might be, that is about as good as I can do.
More Answers (0)
See Also
Categories
				Find more on Linear Algebra in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
