A question about product operation

Hello all!
I'm not sure if this was explained before, but I could not find any answer to this.
So, if i have x=[a b c] and y=[d e f] I'd like to know (if it's possible) how I could obtain:
.
z=
h i j
k l m
n o p
where:
h=a*d k=a*e n=a*f
i=b*d l=b*e o=b*f
j=c*d m=c*e p=c*f
Thanks!

 采纳的回答

Jan
Jan 2013-9-16
编辑:Jan 2013-9-16
x = [1, 2, 3]
y = [10, 20, 30]
z = x' * y
The matrix multiplication of a column vector with a row vector replies the dyadic product. x*y' would reply the dot-product.
Slower alternative:
z = bsxfun(@times, x', y)

6 个评论

Beaten by 1 minute ... ;-)
Could you tell me how i could implement this in Simulink?
I put two constant blocks (one with x and one with y) and i put a product block. At the output of X, before connecting to the first input of the product i have to put a transpose block. I've tried "Transpose" and "Reshape" blocks but they didn't do the job. (the result it's not a 3x3 matrix) I also tried to use the blocks from the "User-defined functions" but I did not succeed.
Yes, if i make a .m file or simply type in command line z=x'*y it works (i have a 3x3 vector in workspace called z).
Any idea how this can be done in Simulink?
As described in the documentation, you can set the product block to "Matrix Mode". I've never worked with Simulink, but Google showed me this information after a few seconds of searching. Does it help already?
Of course you could also put this inside of a MATLAB function block.
Dan p wrote:
I also tried to use the blocks from the "User-defined functions" but I did not succeed.
Please show us, what you have tried and explain "did not succeed" with details.

请先登录,再进行评论。

更多回答(1 个)

Simon
Simon 2013-9-16
编辑:Simon 2013-9-16
Hi!
x = [1, 2, 3]; % row vector
y = [2; 3; 4]; % column vector
z = y * x;

类别

帮助中心File Exchange 中查找有关 Simulink Functions 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by