Bus to 2D Vector
조회 수: 8 (최근 30일)
이전 댓글 표시
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
채택된 답변
Anay
2025년 8월 22일
편집: Anay
2025년 8월 22일
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
추가 답변 (1개)
Aryan
2025년 8월 22일
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 !
참고 항목
카테고리
Help Center 및 File Exchange에서 Messages에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!