MATLAB Answers

How can I use nested loops to pair one piece of data with multiple other pieces?

1 view (last 30 days)
sid28
sid28 on 16 Jun 2021
Commented: Stephen on 16 Jun 2021
I am currently struggling with the following problem involving looping and pairing data.
I have a table of routes between different regions. Each route is only between a specific region and another specific region. In each region, there are multiple locations. So there are x locations in region A and y locations in region B. I need to pair each location in region A with each location in region B for each route. I know this requires some nested loops, but I am getting lost on how I can properly pair this data.
The problem arises in that there might not be the same number of locations in region A and region B. I'm having trouble looping through this correctly to make sure each location in region A is paired with each location in region B.
To visualize this:
Route 1 has Region A and Region B.
Region A has the following locations: A1, A2, A3.
Region B has the following locations: B1, B2, B3, B4, B5.
I need to essentially have a final result of this:
(A1 -> B1) (A1 -> B2) (A1 -> B3) (A1 -> B4) (A1 -> B5)
(A2 -> B1) (A2 -> B2) (A2 -> B3) (A2 -> B4) (A2 -> B5)
(A3 -> B1) (A3 -> B2) (A3 -> B3) (A3 -> B4) (A3 -> B5)
Does anyone know an efficient way of completing this? Thank you in advance for the help!

Accepted Answer

KSSV
KSSV on 16 Jun 2021
a = rand(1,3) ;
b = rand(1,5) ;
[B,A] = meshgrid(b,a)
  3 Comments
Stephen
Stephen on 16 Jun 2021
"I need to essentially have a final result of this:"
[A,B] = ndgrid(1:3,1:5);
M = repelem(A,1,2);
M(:,2:2:end) = B;
compose("(A%d -> B%d)",M)
ans = 3×5 string array
"(A1 -> B1)" "(A1 -> B2)" "(A1 -> B3)" "(A1 -> B4)" "(A1 -> B5)" "(A2 -> B1)" "(A2 -> B2)" "(A2 -> B3)" "(A2 -> B4)" "(A2 -> B5)" "(A3 -> B1)" "(A3 -> B2)" "(A3 -> B3)" "(A3 -> B4)" "(A3 -> B5)"
% (A1 -> B1) (A1 -> B2) (A1 -> B3) (A1 -> B4) (A1 -> B5)
% (A2 -> B1) (A2 -> B2) (A2 -> B3) (A2 -> B4) (A2 -> B5)
% (A3 -> B1) (A3 -> B2) (A3 -> B3) (A3 -> B4) (A3 -> B5)

Sign in to comment.

More Answers (0)

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!