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

7 vues (au cours des 30 derniers jours)
RJ
RJ le 13 Mar 2023
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?

Réponses (2)

Matt J
Matt J le 13 Mar 2023
Modifié(e) : Matt J le 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 le 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?

Catégories

En savoir plus sur Manage Products dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by