Cost matrix from an array without for loop.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
daniel adams
el 29 de Sept. de 2021
Editada: the cyclist
el 29 de Sept. de 2021
Hi I want to create a matrix with entries the absolute value between each point in an array.
My array is called domain, and it has length grid_number.
I have done this in the below code, however I have used a for loop. It takes a long time to run when grid_number is large. Is there a neat way to do this?
for i=1:grid_number
for j=1:grid_number
cost(i,j)=abs(domain(i)-domain(j))
end
end
0 comentarios
Respuesta aceptada
the cyclist
el 29 de Sept. de 2021
Editada: the cyclist
el 29 de Sept. de 2021
You can use implicit expansion to subtract the two vector from each other, by transposing one of them.
cost = abs(domain-domain.');
If you have an older version of MATLAB, that does not support implicit expansion, you can use
cost = abs(bsxfun(@minus,domain,domain'));
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!