Selector
벡터, 행렬 또는 다차원 신호의 입력 요소 선택

라이브러리:
Simulink /
Signal Routing
HDL Coder /
Signal Routing
설명
Selector 블록은 지정된 인덱스를 기반으로 입력 벡터, 행렬 또는 다차원 신호에서 선택된 요소를 추출합니다. 추출된 신호는 입력 신호와 다르게 그룹화될 수 있습니다.
입력 차원 수 파라미터에 입력한 값에 따라 인덱싱 설정의 테이블이 표시됩니다. 테이블의 각 행은 입력 차원 수의 입력 차원에 하나씩 대응됩니다. 각 차원에 대해 사용할 신호의 요소를 정의할 수 있습니다. 벡터 신호를 1차원 신호로 지정하고, 행렬 신호를 2차원 신호로 지정하십시오. 다차원 신호 연산에 사용하도록 Selector 블록을 구성하면 블록 아이콘이 변경됩니다.
예를 들어 1부터 시작하는 인덱스 모드를 사용하는 6차원 신호를 가정해 보겠습니다. Selector 블록 대화 상자의 테이블은 각 차원에 대응하는 행을 하나씩 포함하도록 변경됩니다. 다음 표에 표시된 것처럼 차원을 정의하는 경우 출력은 Y = U(1:end,2:6,[1 3 5],Idx4:Idx4+7,Idx5,Idx6(1):Idx6(2))
입니다. 여기서 Idx4
, Idx5
, Idx6
은 차원 4, 5, 6에 대한 인덱스 포트입니다. 자세한 내용은 Selector 블록을 사용하여 다차원 배열의 요소 선택하기 항목을 참조하십시오.
행 | 인덱스 옵션 | 인덱스 | 출력 크기 |
---|---|---|---|
1 | 모두 선택 | ||
2 | 시작 인덱스(대화 상자) | 2 | 5 |
3 | 인덱스 벡터(대화 상자) | [1 3 5] | |
4 | 시작 인덱스(포트) | 8 | |
5 | 인덱스 벡터(포트) | ||
6 | 시작 인덱스 및 끝 인덱스(포트) |
버스로 구성된 배열을 Selector 블록에 대한 입력 신호로 사용할 수 있습니다. 버스로 구성된 배열의 정의와 사용에 대한 자세한 내용은 Group Nonvirtual Buses in Arrays of Buses 항목을 참조하십시오.
참고
Selector 블록은 입력 신호의 차원 수(차원의 개수)를 변경하지 않습니다. 신호의 차원 수를 지정한 차원으로 변경해야 하는 경우 Reshape 블록을 사용하십시오.
예제
이 예제에서는 입력 신호의 종류는 같지만 인덱스 옵션 설정이 서로 다른 두 개의 Selector 블록을 보여줍니다.
두 Selector 블록 모두 입력 포트로 전달되는 입력 신호에서 7개의 값을 선택합니다. Selector1
블록은 고정된 크기의 신호를 출력하는 반면, Selector2
블록은 컴파일된 신호 차원이 7이 아니라 10인 가변 크기의 신호를 출력합니다.
Selector1
블록은 인덱스 옵션을 Index vector (port)
로 설정하며, 이에 의해 Constant1
로부터의 입력 신호가 인덱스 벡터로 사용됩니다. 입력 신호의 차원이 7이므로 Display
블록은 Constant1
블록의 7개 값을 보여줍니다. Selector2
블록은 입력 포트 크기 파라미터를 10으로 설정하며 이는 Selector2
블록의 입력 신호 중 가장 큰 신호의 크기입니다.
또한, Selector2
블록은 인덱스 옵션을 Starting and ending indices (port)
로 설정합니다. 그러면 입력 신호의 크기가 7이더라도 출력값은 입력 포트 크기 파라미터의 크기(10)로 설정됩니다.
이 예제에서는 Selector 블록을 사용하여 다차원 배열의 요소를 선택하는 방법을 보여줍니다. 이 예제에서는 블록의 다양한 인덱싱 옵션을 사용하여 6차원 배열의 요소를 선택하고 추출합니다.
모델을 엽니다.
mdl = "extractmultidimarray.slx";
open_system(mdl)
블록 구성
입력 배열 U
는 1부터 시작하는 인덱스 모드를 사용하고 차원이 6×6×6×9×7×5인 6차원 배열입니다. 이 모델은 모델의 PreLoadFcn 콜백을 사용하여 inputSignal
파일에서 입력 배열을 불러옵니다. 다음 선택 의미 체계와 다양한 인덱스 옵션을 사용하여 배열의 각 차원에서 요소를 선택할 수 있습니다. 이 예제에서는 1부터 시작하는 인덱스 모드가 입력 배열에 사용됩니다. 따라서 행 번호(테이블의 첫 번째 열)가 그대로 입력 배열의 차원을 나타냅니다. 예를 들어 행 1은 입력 배열의 차원 1을 나타냅니다.
차원 1의 모든 요소를 추출하려면 "모두 선택"(
Select All
)을 사용합니다.차원 2의 세 번째 요소와 네 번째 요소를 추출하려면 "시작 인덱스(대화 상자)"(
Starting Index (dialog)
)를 사용합니다. 인덱스 열을3
으로 설정하고 출력 크기 열을2
로 설정합니다.차원 3의 첫 번째 요소, 세 번째 요소, 다섯 번째 요소를 추출하려면
Index vector (dialog)
를 사용합니다. 인덱스 열을 [1 3 5
]로 설정합니다.차원 4의 처음 8개 요소를 추출하려면 "시작 인덱스(포트)"(
Starting Index (port)
)를 사용합니다. 포트 에 연결된 Constant 블록Const1
은 시작 인덱스 값1
을 제공합니다. 출력 크기 열을8
로 설정합니다.차원 5의 두 번째 요소, 세 번째 요소, 네 번째 요소를 추출하려면 "인덱스 벡터(포트)"(
Index vector (port)
)를 사용합니다. 포트 에 연결된 Constant 블록Const2
는 인덱스 값 [2:4
]을 제공합니다.차원 6에서 요소의 범위를 추출하려면 "시작 인덱스 및 끝 인덱스(포트)"(
Starting and ending indices (port)
)를 사용합니다. 선택 범위는 세 번째 요소부터 다섯 번째 요소까지입니다. 포트 에 연결된 Constant 블록Const3
은 범위 [3 5
]를 제공합니다.
신호 기록
시뮬레이션을 실행하고 To Workspace 블록을 사용하여 신호를 변수 Y
에 기록합니다.
Y = sim(mdl);
확장 예제
유계 가변 크기 신호의 기본 연산
이 예제에서는 유계 가변 크기 신호를 생성하는 방법을 보여주고 이러한 신호를 사용하는 일부 연산을 보여줍니다. 이 예제에서는 Selector 블록과 Switch 블록을 사용하여 가변 크기 신호를 생성합니다. 이 신호는 수학 연산, 버스 생성, 버스 선택, 행렬 결합 및 이산 필터 방정식 구현에 사용됩니다.
Multimode Variable-Size Signal
Use different operation modes to correspond to different signal sizes.
제한 사항
인덱스 파라미터는 시뮬레이션 도중에는 조정이 불가능합니다. 차원에 대한 인덱스 옵션이
인덱스 벡터(대화 상자)
또는시작 인덱스(대화 상자)
로 설정되고 블록 대화 상자에서 해당 인덱스에 대해Simulink.Parameter
객체를 포함한 기호 값을 지정하면, 시뮬레이션을 시작할 때의 순시 값이 시뮬레이션 전체에서 사용되며 파라미터는 생성 코드에서 인라인 값으로 나타납니다. Tune and Experiment with Block Parameter Values 항목을 참조하십시오. 인덱스 포트를 사용하여 선택 인덱스를 동적으로 조정할 수 있습니다.
포트
입력
입력 신호이고 출력 신호에 대한 요소의 소스입니다.
데이터형: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
해당 출력 요소를 선택하기 위한 인덱스를 지정하는 외부 포트입니다.
사용자 지정 너비를 갖는 정수(예: 15비트 정수 또는 23비트 정수)를 인덱스 신호 값으로 지정할 수 있습니다. 정수의 너비를 구성할 때 모드를 고정소수점
으로 지정하고 워드 길이는 65,535 이하, 기울기는 1, 편향은 0으로 지정해야 합니다. 고정소수점 데이터형 지정에 대한 자세한 내용은 Specify Data Types Using Data Type Assistant 항목을 참조하십시오.
종속성
외부 인덱스 포트를 활성화하려면, 인덱스 옵션 테이블의 해당 행에서 인덱스 옵션을 인덱스 벡터(포트)
, 시작 인덱스(포트)
또는 시작 인덱스 및 끝 인덱스(포트)
로 설정하십시오.
데이터형: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
출력
입력 신호에서 선택되거나 재정렬된 요소로부터 생성된 출력 신호입니다.
데이터형: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
파라미터
입력 신호의 차원 수를 지정합니다.
프로그래밍 방식의 사용법
블록 파라미터: NumberOfDimensions
|
유형: 문자형 벡터 |
값: integer
|
디폴트 값: '1'
|
인덱싱 모드를 지정합니다. One-based
가 선택되면 인덱스 1이 입력 벡터의 첫 번째 요소를 지정합니다. Zero-based
가 선택되면 인덱스 0이 입력 벡터의 첫 번째 요소를 지정합니다.
프로그래밍 방식의 사용법
블록 파라미터: IndexMode
|
유형: 문자형 벡터 |
값: 'One-based' | 'Zero-based'
|
디폴트 값: 'One-based'
|
차원을 기준으로 신호의 요소를 인덱싱할 방법을 정의합니다. 목록에서 다음을 선택합니다.
모두 선택
추가 구성은 필요하지 않습니다. 모든 요소가 선택됩니다.
인덱스 벡터(대화 상자)
인덱스 열을 활성화합니다. 요소의 인덱스로 구성된 벡터를 입력하십시오.
인덱스 벡터(포트)
추가 구성은 필요하지 않습니다.
시작 인덱스(대화 상자)
인덱스 열과 출력 크기 열을 활성화합니다. 인덱스 열에 선택할 요소 범위의 시작 인덱스를 입력하고 출력 크기 열에 선택할 요소의 개수를 입력하십시오.
시작 인덱스(포트)
출력 크기 열을 활성화합니다. 출력 크기 열에 선택할 요소의 개수를 입력하십시오.
시작 인덱스 및 끝 인덱스(포트)
추가 구성은 필요하지 않습니다.
이 옵션을 사용하면 가변 크기 출력 신호가 생성됩니다. 업데이트하면 출력 차원이 입력 신호 차원과 동일하게 설정됩니다. 실행 중에 출력 차원은 인덱스를 전달하는 신호에 따라 업데이트됩니다.
출력 신호 데이터를 기록할 때, 선택되지 않은 신호는 NaN 값으로 채워집니다.
필요에 따라 인덱스 열과 출력 크기 열이 표시됩니다.
프로그래밍 방식의 사용법
블록 파라미터: IndexOptionArray
|
유형: 문자형 벡터로 구성된 셀형 배열 |
값: {'Select all'} | {'Index vector (dialog)'} | {'Index vector (port)'} | {'Starting index (dialog)'} | {'Starting index (port)'} | {'Starting and ending indices (port)'} |
디폴트 값: {'Index vector (dialog)'}
|
문자형 벡터로 구성된 셀형 배열이 아닌 문자형 벡터의 경우 IndexOptions
를 사용하십시오.
인덱스 옵션이 인덱스 벡터(대화 상자)
이면 관심 있는 각 요소의 인덱스를 입력합니다.
인덱스 옵션이 시작 인덱스(대화 상자)
이면 선택할 요소 범위의 시작 인덱스를 입력합니다.
프로그래밍 방식의 사용법
블록 파라미터: IndexParamArray
|
유형: 문자형 벡터로 구성된 셀형 배열 |
값: 정수 |
디폴트 값: {'[1 3]'}
|
문자형 벡터로 구성된 셀형 배열이 아닌 문자형 벡터의 경우 Indices
를 사용하십시오.
블록 출력 신호의 너비를 지정합니다.
프로그래밍 방식의 사용법
블록 파라미터: OutputSizeArray
|
유형: 문자형 벡터로 구성된 셀형 배열 |
값: 정수 |
디폴트 값: {'1'}
|
문자형 벡터로 구성된 셀형 배열이 아닌 문자형 벡터의 경우 OutputSizes
를 사용하십시오.
1차원 신호의 블록 입력 신호 너비를 지정합니다. 구동 블록에서 상속하려면 -1
을 입력하십시오.
프로그래밍 방식의 사용법
블록 파라미터: InputPortWidth
|
유형: 문자형 벡터 |
값: integer
|
디폴트 값: '3'
|
샘플 간의 시간 간격을 지정합니다. 샘플 시간을 상속하려면 이 파라미터를 -1
로 설정하십시오. 자세한 내용은 샘플 시간 지정하기 항목을 참조하십시오.
종속성
이 파라미터는 -1
이외의 값으로 설정한 경우에만 표시됩니다. 자세한 내용은 Blocks for Which Sample Time Is Not Recommended 항목을 참조하십시오.
프로그래밍 방식의 사용법
프로그래밍 방식으로 블록 파라미터 값을 설정하려면 set_param
함수를 사용하십시오.
파라미터: | SampleTime |
값: | "-1" (디폴트 값) | scalar or vector in quotes |
Simulink®가 액셀러레이터 또는 고속 액셀러레이터 모드에서 시뮬레이션하는 동안 입력 신호의 관련 차원에 대한 유효 인덱스 범위를 벗어나는 인덱스 값이 있는지 검사하도록 하려면 이 체크박스를 선택합니다. 인덱스가 범위 밖에 있다면 Simulink는 시뮬레이션을 중단하고 오류 메시지를 표시합니다.
참고
이 체크박스를 선택하지 않으면 범위 밖 인덱스 값이 액셀러레이터 또는 고속 액셀러레이터 모드의 시뮬레이션 도중에 정의되지 않은 동작으로 이어질 수 있습니다.
Simulink는 일반 모드의 시뮬레이션 도중에는 이 체크박스 선택 여부와 무관하게 이 검사를 수행합니다.
프로그래밍 방식의 사용법
파라미터: RuntimeRangeChecks
|
유형: 문자형 벡터 |
값: 'Off' | 'On' |
디폴트 값: 'Off'
|
블록 특성
데이터형 |
|
직접 피드스루 |
|
다차원 신호 |
|
가변 크기 신호 |
|
영점교차 검출 |
|
확장 기능
C/C++ 코드 생성
Simulink® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
HDL Coder™는 HDL 구현과 합성된 논리에 영향을 주는 추가 구성 옵션을 제공합니다.
이 블록에는 하나의 디폴트 HDL 아키텍처가 있습니다.
일반 | |
---|---|
ConstrainedOutputPipeline | 기존 지연을 설계 내부로 이동하여 출력에 배치하는 레지스터 개수입니다. 분산된 파이프라이닝은 이러한 레지스터를 다시 분산하지 않습니다. 디폴트 값은 |
InputPipeline | 생성된 코드에 삽입할 입력 파이프라인 단계의 개수입니다. 분산 파이프라이닝과 제약이 있는 출력 파이프라이닝은 이러한 레지스터를 이동할 수 있습니다. 디폴트 값은 |
OutputPipeline | 생성된 코드에 삽입할 출력 파이프라인 단계의 개수입니다. 분산 파이프라이닝과 제약이 있는 출력 파이프라이닝은 이러한 레지스터를 이동할 수 있습니다. 디폴트 값은 |
네이티브 부동소수점 | |
---|---|
LatencyStrategy | 부동소수점 연산자인 경우 설계 내 블록을 |
이 블록은 HDL 코드 생성 시 다음과 같은 데이터형을 지원합니다.
입력 포트 | 차원 | 고정소수점 | 부동소수점 | 내장 정수 | 버스 | 부울 | 열거형 | 복소 신호 |
---|---|---|---|---|---|---|---|---|
Port1 | 스칼라 벡터 행렬(최대 2차원) | 예 | half형 single형 double형 | 아니요 | 예 | 예 | 예 | 예 |
이 블록은 속도와 면적을 최적화하기 위해 다음과 같은 HDL 최적화를 적용합니다.
면적 최적화
최적화 | 설명 |
---|---|
Resource Sharing (HDL Coder) | 리소스 공유는 HDL Coder가 기능적으로 동등한 여러 리소스를 식별하여 단일 리소스로 대체하는 면적 최적화입니다. |
Streaming (HDL Coder) | 스트리밍은 HDL Coder가 벡터 데이터 경로를 스칼라 데이터 경로(또는 더 작은 크기의 여러 개 벡터 데이터 경로)로 변환하는 면적 최적화입니다. |
속도 최적화
최적화 | 설명 |
---|---|
Distributed Pipelining (HDL Coder) | 분산 파이프라이닝(Distributed pipelining), 즉 레지스터 타이밍 재지정은 설계 내 기존 지연을 이동시켜서 기능적 동작을 유지하면서 임계 경로를 줄이는 속도 최적화입니다. |
Clock-Rate Pipelining (HDL Coder) | 클록 속도 파이프라이닝(Clock-rate pipelining)은 HDL Coder에서 다른 속도 최적화와 면적 최적화가 클록 속도에서 대기 시간을 유발할 수 있도록 하는 최적화 프레임워크입니다. |
Adaptive Pipelining (HDL Coder) | 적응형 파이프라이닝(Adaptive pipelining) 최적화는 설계 내 블록에 파이프라인 레지스터를 삽입하여 달성 가능한 클록 주파수를 개선하고 FPGA 보드의 면적 사용량을 줄일 수 있는 레지스터가 포함된 블록의 패턴이나 조합을 생성합니다. |
PLC 코드 생성
Simulink® PLC Coder™를 사용하여 Structured Text 코드를 생성할 수 있습니다.
고정소수점 변환
Fixed-Point Designer™를 사용하여 고정소수점 시스템을 설계하고 시뮬레이션할 수 있습니다.
버전 내역
R2006a 이전에 개발됨R2023a부터는 Selector 블록의 인덱스 신호 값을 지정하는 데 사용하는 정수의 너비를 사용자 지정할 수 있습니다.
R2023a부터 1차원 가변 크기 입력 신호를 받도록 구성된 Selector 블록이 인덱스 벡터(대화 상자)
및 시작 인덱스(대화 상자)
를 인덱스 옵션으로 지원합니다.
이러한 기능 향상 덕분에 1차원 가변 크기 입력 신호를 받도록 Selector 블록을 구성할 때 사용 가능한 모든 인덱스 옵션 설정 중에서 선택할 수 있습니다.
참고 항목
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)