generate orthogonal matrix function
    9 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hi there,
Assume I have two square matrix A and B with the same size, I want to find a matrix that orthogonal to A but non-orthogonal to B, i.e., AC=0 and BC≠0, where C is the matrix I want.
Is there any function can generate it? I know null(A) can generate the orthogonal matrix of A, but I want to ensure it is non-orthogonal to B meanwhile.
Thanks,
1 commentaire
  David Goodmanson
      
      
 le 8 Sep 2023
				
      Modifié(e) : David Goodmanson
      
      
 le 8 Sep 2023
  
			Hi MN,
for this to work there will have to be restrictions on A and B.  For example, A cannot be of full rank, because if it is, then it has and inverse, in which case AC = 0 -->  C=0.  So suppose A is not of full rank.  Then B must have at least one row that is linearly independent of the rows of A, otherwise AC = 0 --> BC = 0.
Réponses (1)
  Bruno Luong
      
      
 le 8 Sep 2023
        
      Modifié(e) : Bruno Luong
      
      
 le 8 Sep 2023
  
      I claim this returns the solution C that is orthogonal to A but not to B (meaning not to all of columns of B)
A = rand(5,4)*rand(4,5);
B =  rand(5,4)*rand(4,5);
AO = null(A.');
ABO = null([A B].');
v = null(ABO'*AO);
if isempty(v)
    fprintf('solution does not exist\n')
    return
end
v1 = v(:,1);
[Q,~,~] = qr([2*v1, eye(size(AO,2))]);
C = AO*Q
% Check
norm( A'*C, 'fro')
norm( B'*C, 'fro')
3 commentaires
  Bruno Luong
      
      
 le 8 Sep 2023
				Thanks I fix it just a small detail, my algo supposes to work with non-square and square matrices
  Bruno Luong
      
      
 le 8 Sep 2023
				To get the orthogonal of rows A, B, change the first two statements
A = rand(5,4)*rand(4,5);
B =  rand(5,4)*rand(4,5);
AO = null(A);       % change
ABO = null([A; B]); % change
v = null(ABO'*AO);
if isempty(v)
    fprintf('solution does not exist\n')
    return
end
v1 = v(:,1);
[Q,~,~] = qr([2*v1, eye(size(AO,2))]);
C = AO*Q
% Check
norm( A*C, 'fro')
norm( B*C, 'fro')
Voir également
Catégories
				En savoir plus sur Numerical Integration and Differentiation dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!