Matrix Multiplication with large vectors

5 ビュー (過去 30 日間)
amberly hadden
amberly hadden 2015 年 5 月 11 日
コメント済み: Walter Roberson 2015 年 5 月 15 日
Hi,
If I have following problem how can I formulate it in matlab
A=
1 3
2 4
b=
xi
yi
where xi and yi are column vectors with lets say 100 values in each how can I input this problem in Matlab by using following formula
[z1 = A*b
z2]
Please note I have very large martix with vectors xi and yi and I want out put two matrices z1 and z2
Thanks in advance, jay
thanks
  3 件のコメント
amberly hadden
amberly hadden 2015 年 5 月 11 日
編集済み: Walter Roberson 2015 年 5 月 11 日
Thanks walter,
So here is the thing
zi = [1 2; 3 4]*[xi;yi]
so z1 = 1*xi+2*yi
z2 = 3*xi+4*yi
coz z1 and z2 are two vectors of same size as xi and yi respectively.
Thanks very much for your guidence
Walter Roberson
Walter Roberson 2015 年 5 月 11 日
There seems to be some confusion about whether xi and yi are row vectors or column vectors. You said column vectors before, but [xi;yi] would create a single column vector of the two combined, with [xi,yi] producing two columns from two column vectors.

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2015 年 5 月 15 日
T = arrayfun(@(x,y) A*[x;y], xi, yi, 'Uniform', 0);
z1z2 = vertcat(T{:});
z1 = z1z2(:,1);
z2 = z1z2(:,2);
However, this formulation of the code would not be efficient if you had a small A and long vectors. In your actual situation, what size() is your A ?
  2 件のコメント
amberly hadden
amberly hadden 2015 年 5 月 15 日
thanks, Walter apreciated
Walter Roberson
Walter Roberson 2015 年 5 月 15 日
In the case of A being 2 x 2, it is faster just to write out the values
z1 = A(1,1) * xi + A(2,1) * yi;
z2 = A(1,2) * xi + A(2,2) * yi;

サインインしてコメントする。

その他の回答 (1 件)

Thorsten
Thorsten 2015 年 5 月 12 日
編集済み: Thorsten 2015 年 5 月 12 日
A = [1 2; 3 4];
xi = 10;
yi = 20;
x = [xi; yi];
z1 = A(1,:)*x;
z2 = A(2,:)*x;
or
z = A*x;
z1 = z(1);
z2 = z(2);
  1 件のコメント
amberly hadden
amberly hadden 2015 年 5 月 15 日
編集済み: Walter Roberson 2015 年 5 月 15 日
Sorry I was away so could not follow up...
[z1
z2] = [1 2
3 4]*[xi
yi] xi = x1,x2,x3....x100 yi = y1,y2,y3..y100
2*2 matrix need to multiply by column vector (one in a sense but infect data has two of them) like
[a
b]

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeOperators and Elementary Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by