Clear Filters
Clear Filters

How to find the original vector given the outer product of the vector?

4 views (last 30 days)
Suppose we have a vector:
psi = rand(n,1) + 1i * rand(n,1);
and we compute its outer product:
outer_product = psi * psi'
Now, given this outer_product, is there a way to retrieve the original vector?

Answers (2)

Matt J
Matt J on 13 Mar 2023
Edited: Matt J on 13 Mar 2023
It's only possible up to a multiplicative constant of the form .
n=5; psi0 = rand(n,1) + 1i * rand(n,1);
outer_product = psi0 * psi0';
[psi,s]=svds(outer_product,1);
psi=psi*sqrt(s); %recovered psi
abs(psi./psi0)
ans = 5×1
1.0000 1.0000 1.0000 1.0000 1.0000

Steven Lord
Steven Lord on 13 Mar 2023
n = 3;
psi1 = rand(n,1) + 1i * rand(n,1)
psi1 =
0.2707 + 0.4633i 0.8235 + 0.2196i 0.4234 + 0.1861i
outer_product1 = psi1 * psi1'
outer_product1 =
0.2879 + 0.0000i 0.3247 + 0.3221i 0.2008 + 0.1458i 0.3247 - 0.3221i 0.7264 + 0.0000i 0.3895 - 0.0603i 0.2008 - 0.1458i 0.3895 + 0.0603i 0.2139 + 0.0000i
psi2 = 1i*psi1
psi2 =
-0.4633 + 0.2707i -0.2196 + 0.8235i -0.1861 + 0.4234i
outer_product2 = psi2 * psi2'
outer_product2 =
0.2879 + 0.0000i 0.3247 + 0.3221i 0.2008 + 0.1458i 0.3247 - 0.3221i 0.7264 + 0.0000i 0.3895 - 0.0603i 0.2008 - 0.1458i 0.3895 + 0.0603i 0.2139 + 0.0000i
norm(outer_product1-outer_product2)
ans = 1.3432e-16
outer_product1 and outer_product2 are effectively identical. So if I gave you that outer_product, did I generate it using psi1 or psi2?

Categories

Find more on Results, Reporting, and Test File Management in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!