2x2 Projection matrix of rank 1

10 views (last 30 days)
john
john on 23 Nov 2022
Edited: john on 27 Nov 2022
  2 Comments
Rik
Rik on 24 Nov 2022
I recovered the removed content from the Google cache (something which anyone can do). Editing away your question is very rude. Someone spent time reading your question, understanding your issue, figuring out the solution, and writing an answer. Now you repay that kindness by ensuring that the next person with a similar question can't benefit from this answer.
john
john on 27 Nov 2022
Edited: john on 27 Nov 2022
oops

Sign in to comment.

Accepted Answer

Matt J
Matt J on 23 Nov 2022
Edited: Matt J on 23 Nov 2022
a=[1; 2]; n=[3; 4]; x=[5; 6];
r1p(a,n,a)
ans = 2×1
0.1789 0.3578
r1p(a,n,n)
ans = 2×1
1.0e-15 * -0.1986 -0.3972
r1p(a,n,x)
ans = 2×1
-0.1789 -0.3578
function p = r1p(a,n,x)
% computes the action of P, the 2x2 projection matrix of rank 1 having
% a - the sole basis vector for the column space of P
% n - the sole basis vector for the null space of P
a = normalize(a(:),'n');
b = normalize(null(n(:)'),'n');
p = dot(x,b)*a;
end
  4 Comments
john
john on 23 Nov 2022
Thank you so much for continuing to help me out. However, this now works for a=[1; 0.01]; n=[0.01; 1]; x=[1; 0]; (just have to negate it), but does not return the correct answer for a=[1; 2]; n=[3; 4]; x=[5; 6];
Matt J
Matt J on 23 Nov 2022
Again, you do not provide what you think is the correct answer, or an explanation of why that answer is correct..

Sign in to comment.

More Answers (1)

Moiez Qamar
Moiez Qamar on 24 Nov 2022
%should work for:
a=[1; 0.01]
a = 2×1
1.0000 0.0100
n=[0.01; 1]
n = 2×1
0.0100 1.0000
x=[1; 0]
x = 2×1
1 0
p=r1p(a,n,x)
P = 2×2
1.0001 -0.0100 0.0100 -0.0001
p = 2×1
1.0001 0.0100
p = 2×1
1.0001 0.0100
%and for:
a=[1; 0];
n=[0; 1];
x=[1; 0];
p = r1p(a,n,x);
P = 2×2
1 0 0 0
p = 2×1
1 0
function p = r1p(a,n,x)
% computes the action of P, the 2x2 projection matrix of rank 1 having
% a - the sole basis vector for the column space of P
% n - the sole basis vector for the null space of P
xi=[0 -1; 1 0]*n;
chi=xi/(xi'*a);
P=a*chi'
p=P*x
end
  1 Comment
Matt J
Matt J on 24 Nov 2022
P=a*chi'
outer products are not efficient. That's why the exercise asks for you to compute p without computing P.

Sign in to comment.

Categories

Find more on Operating on Diagonal Matrices 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!