Cost matrix from an array without for loop.
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
daniel adams
am 29 Sep. 2021
Bearbeitet: the cyclist
am 29 Sep. 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 Kommentare
Akzeptierte Antwort
the cyclist
am 29 Sep. 2021
Bearbeitet: the cyclist
am 29 Sep. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!