Multiplying two vectors to form a matrix

Hello, I have two vectors x and y, both 601x1. I want to multiply them to form a matrix of 601x601, but the values inside the matrix have to be sqrt(x^2+y^2). How do I do this? Thanks.

 Respuesta aceptada

Jan
Jan el 25 de Feb. de 2022
Editada: Jan el 25 de Feb. de 2022
z = sqrt(x .^ 2 + y.' .^ 2)
But, of course, this does not match "multiply them". If you want a multiplication:
x .* y.'
[EDITED] For Matlab versions < R2016b:
z = sqrt(bsxfun(@plus, x.'.^2, y.^2))

2 comentarios

Nikola Segedin
Nikola Segedin el 25 de Feb. de 2022
Multiplication is not the right word, I agree. I've tried this and all I got is "Error using plus, Matrix dimensions must agree.".
Jan
Jan el 25 de Feb. de 2022
See my comment under Walter's answer.

Iniciar sesión para comentar.

Más respuestas (2)

KSSV
KSSV el 25 de Feb. de 2022
x = rand(601,1) ;
y = rand(601,1) ;
iwant = sqrt(x.^2+y'.^2) ;
size(iwant)
ans = 1×2
601 601
Walter Roberson
Walter Roberson el 25 de Feb. de 2022
D = sqrt(x.'.^2 + y.^2)

4 comentarios

Walter Roberson
Walter Roberson el 25 de Feb. de 2022
The difference between my answer and the nearly-simultaneous answers by @KSSV and @Jan is that I arranged for the x coordinates to run horizontally but they have the x coordinates run vertically.
Nikola Segedin
Nikola Segedin el 25 de Feb. de 2022
I've tried this and all I got is "Error using plus, Matrix dimensions must agree.".
@Nikola Segedin: Which Matlab versionare you using? Since R2016b an "implicit expanding" is applied. For former versions:
D = sqrt(bsxfun(@plus, x.'.^2, y.^2))
Nikola Segedin
Nikola Segedin el 25 de Feb. de 2022
I'm using R2010b. Thank you, this works for me!

Iniciar sesión para comentar.

Categorías

Productos

Versión

R2010b

Etiquetas

Preguntada:

el 25 de Feb. de 2022

Editada:

Jan
el 25 de Feb. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by