Bus to 2D Vector
    3 views (last 30 days)
  
       Show older comments
    
Hello!
I have a bus composed of numerous same entities. I used enumerate to create these entities. 
Now I want to separately proceed each enumerate entity in a for-loop. 
Unfortunately, bus is converted to 1D-vector. 
Are there any solutions to convert the bus to 2D-vector?
I've attached an example of simplified model and screen copy:

0 Comments
Accepted Answer
  Anay
 on 22 Aug 2025
        
      Edited: Anay
 on 22 Aug 2025
  
      Hi Dimitri,
I understand that you want to access data of each bus individually from a 2-D vector. A quick fix can be to use a “vector concatenate” block to concatenate data of each bus along the column and create the desired 2-D vector. Refer to the images "mdl" amd "subs" to view the necessary changes.
You can consider using an “array of buses” so that you can still retain each individual bus and use the bus selectors to access the individual signals in the bus by their name. You can refer to the below link to know more about array of buses in MATLAB documentation: 
Hope this helps!
0 Comments
More Answers (1)
  Aryan
 on 22 Aug 2025
        Hi,
In addition to the solution provided by Anay, you may also consider following the steps outlined below.
1. Convert each bus to a vector
- Add a Bus to Vector block (Simulink → Signal Attributes) after each entity bus (id, mode, type, payload).
- Each output becomes a 1×4 vector = [id, mode, type, payload].
2. Make one N×4 matrix
- Vector Concatenate + Reshape : Concatenate all into one long vector, then Reshape to [N 4].
3. Loop through rows (For Iterator Subsystem)
- Drag a For Iterator Subsystem (Ports & Subsystems)
- Connect your [N×4] matrix to its input.
Inside the subsystem: 
- Add a Selector block (Signal Routing).
- Dimensions = 2 (because matrix has rows + columns)
- Row index = port (so the row number comes from the loop index i).
- Columns = : (this means all columns). So, at iteration i, the Selector outputs the i-th row of the matrix.
- Add a Demux (4) to split into 4 signals.The row [id, mode, type, payload] is still a vector of 4 numbers.
4. Process signals
- Inside the subsystem, wire id, mode, type, payload into your logic.
Summary:
- Bus → Bus to Vector → (N×4) Matrix → For Iterator Subsystem → Selector → Demux → process each entity.
Hope it helps !
See Also
Categories
				Find more on Messages in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

