How to find unknown linear operator?

I have a square matrix A that acts on a some vector x such that A*x = y. Matrix A is heavily constrained with only a few unknowns. x and y are known exactly. How do I solve for A?
For example say:
sym a b c d
A = [a 0 0 b;
c d 0 0;
0 0 0 0;
0 0 0 0]
x = % some known vector
y = % some known vector
How do we find A now?

2 Comments

This is a method which come to mind:
syms a b c d
A = [a 0 0 b;
c d 0 0;
0 0 0 0;
0 0 0 0];
x = zeros(4,1); %your known vecotor here
y = zeros(4,1); %and here!
eq1 = A*x ==y;
k = solve(eq1, [a,b,c,d]);
sol = [k.a, k.b, k.c, k.d]
Hello Tsuyoshi,
Well, with your example for A, you are certainly not going to do it for arbitrary x and y, because the form of A means that y(3)=y(4)=0. So any solution with either y(3) or y(4) nonzero is impossible. (It's a consequence of A being singular).
But let's say that y(3)=y(4)=0. The two equations that are left are
a*x(1) + b*x(4) = y(1)
c*x(1) + d*x(2) = y(2)
which is one eqn. for two unknowns a,b
and one eqn. for two unknowns c,d
so you can get solutions, but you can't solve for any unknown uniquely.

Sign in to comment.

Answers (0)

Products

Release

R2019a

Asked:

on 10 Sep 2019

Commented:

on 23 Nov 2019

Community Treasure Hunt

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

Start Hunting!