Bus to 2D Vector

조회 수: 8 (최근 30일)
Dimitri
Dimitri 2025년 8월 19일
댓글: Dimitri 2025년 8월 25일
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:

채택된 답변

Anay
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!

추가 답변 (1개)

Aryan
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:
  1. Add a Selector block (Signal Routing).
  2. Dimensions = 2 (because matrix has rows + columns)
  3. Row index = port (so the row number comes from the loop index i).
  4. Columns = : (this means all columns). So, at iteration i, the Selector outputs the i-th row of the matrix.
  5. 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 !
  댓글 수: 1
Dimitri
Dimitri 2025년 8월 25일
Thanks a lot!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Messages에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by