Main Content

System object란?

System object™는 특수한 MATLAB® 객체입니다. 대부분의 툴박스에는 System object가 포함되어 있습니다. System object는 시간에 따라 입력값이 변경되는 동적 시스템을 구현하고 시뮬레이션하기 위해 특별히 설계되었습니다. 대부분의 신호 처리, 통신, 제어 시스템은 동적입니다. 동적 시스템에서는 출력 신호의 값이 입력 신호의 순시값과 시스템의 과거 동작에 모두 종속됩니다. System object는 다음 계산 단계에 사용되는 해당 과거 동작을 저장하기 위해 내부 상태를 사용합니다. 따라서 System object는 비디오 및 오디오 처리 시스템과 같이, 대량의 데이터 스트림을 세그먼트 단위로 처리하는 반복 계산에 최적화되어 있습니다. 스트리밍 데이터를 처리하는 이런 능력 덕분에 메모리에 대량의 데이터를 보관할 필요가 없다는 장점이 있습니다. 또한, 스트리밍 데이터를 사용하면 루프를 효율적으로 사용하는 간소화된 프로그램을 사용할 수 있습니다.

예를 들어, 파일에서 데이터를 읽어 들여 필터링한 다음 필터링된 출력값을 다른 파일에 쓰는 시스템에 System object를 사용할 수 있습니다. 일반적으로, 각 루프 반복에서는 지정된 데이터 양이 필터로 전달됩니다. file reader 객체는 상태를 사용하여 파일에서 다음 데이터 읽기를 시작할 위치를 추적합니다. 마찬가지로, file writer 객체는 데이터를 덮어쓰지 않도록 출력 파일에 데이터를 마지막으로 쓴 위치를 추적합니다. filter 객체는 필터링이 올바르게 수행되도록 하기 위해 자체 내부 상태를 유지합니다. 다음 도식은 그러한 시스템의 단일 루프를 나타냅니다.

Illustration of a single loop of the system object starting from Input data file on the left moving toward right to File reader system object, Filter system object, file writer system object to filtered data file

이런 장점 덕분에 System object는 스트리밍 데이터를 처리하는 데 적합합니다.

대부분의 System object에서 다음과 같은 기능이 지원됩니다.

  • 고정소수점 산술(Fixed-Point Designer™ 라이선스 필요)

  • C 코드 생성(MATLAB Coder™ 또는 Simulink® Coder 라이선스 필요)

  • HDL 코드 생성(HDL Coder™ 라이선스 필요)

  • 실행 파일 또는 공유 라이브러리 생성(MATLAB Compiler™ 라이선스 필요)

참고

사용하려는 특정 System object에 대한 고정소수점, 코드 생성, MATLAB Compiler 지원을 확인하려면 제품 문서를 참조하십시오.

System object는 데이터를 처리를 위해 최소 2개의 명령을 사용합니다.

  • 객체 생성(예: fft256 = dsp.FFT)

  • 객체를 통한 데이터 실행(예: fft256(x))

이렇게 생성과 실행을 분리하면 각각 다른 설정을 가진 영구적이고 재사용 가능한 객체를 여러 개 만들 수 있습니다. 이 접근 방식을 사용하면 반복되는 입력 유효성 검사와 검증을 피하고 프로그래밍 루프 내에서 손쉽게 사용하고 전체적인 성능을 개선할 수 있습니다. 이와 반대로, MATLAB 함수는 호출할 때마다 파라미터의 유효성을 검사해야 합니다.

System Toolbox에서 제공되는 System object 외에 자신만의 고유한 System object를 만들 수도 있습니다. System object 생성하기를 참조하십시오.

System object 실행하기

System object를 실행하고 해당 알고리즘으로 정의된 작업을 수행하려면 객체를 함수인 것처럼 호출하십시오. 예를 들어, dsp.FFT System object를 사용하고 길이를 1024로, 이름을 dft로 지정하는 FFT 객체를 생성하려면 다음을 사용하십시오.

dft = dsp.FFT('FFTLengthSource','Property','FFTLength',1024);
입력값 x로 이 객체를 실행하려면 다음을 사용하십시오.
dft(x);
입력 인수 없이 System object를 실행하는 경우 빈 괄호를 포함해야 합니다. 예를 들면 asysobj()와 같습니다.

System object를 실행하면 초기화 및 객체 상태 처리와 같이 데이터 처리와 관련된 다른 중요한 작업도 수행됩니다.

참고

System object를 실행하는 또 다른 방법은 step 함수를 사용하는 것입니다. 예를 들어, dft = dsp.FFT를 사용하여 생성된 객체의 경우 step(dft,x)를 사용하여 실행할 수 있습니다.

System object 함수

System object를 생성한 후 다양한 객체 함수를 사용하여 데이터를 처리하거나 객체에 대한 정보를 수집합니다. 함수를 사용하기 위한 구문은 <object function name>(<system object name>)이며 가능한 추가 입력 인수를 받을 수 있습니다. 예를 들어, txfourier = dsp.FFT의 경우(여기서 txfourier는 사용자가 할당하는 이름임) reset(txfourier)를 사용하여 reset 함수를 호출할 수 있습니다.

흔히 사용되는 객체 함수

모든 System object는 다음 객체 함수를 지원합니다. 함수를 특정 객체에 적용할 수 없는 경우 이 함수를 호출해도 해당 객체에 아무런 영향을 미치지 않습니다.

함수설명
객체 함수 실행 또는
step

객체를 실행하고 이 객체에 의해 정의된 알고리즘을 사용하여 데이터를 처리합니다.

: 객체 dft = dsp.FFT;의 경우 다음을 사용하여 객체를 실행합니다.

  • y = dft(x)

  • y = step(dft,x)

이러한 처리의 일부로, 객체는 리소스를 초기화하고 출력값을 반환하고 필요한 경우에 객체 상태를 업데이트합니다. 실행 중에는 조정 가능형 속성만 변경할 수 있습니다. System object를 실행하는 두 방법 모두 보통의 MATLAB 변수를 반환합니다.

release

리소스를 해제하고 System object가 사용되는 동안 제한되는 System object 속성값과 추가 특성을 변경할 수 있도록 허용합니다.

resetSystem object를 해당 객체의 초기값으로 재설정합니다.
narginSystem object 알고리즘 정의에서 허용하는 입력값 개수를 반환합니다. 알고리즘 정의에 varargin이 포함된 경우 nargin 출력값은 음수입니다.
nargoutSystem object 알고리즘 정의에서 허용하는 출력값 개수를 반환합니다. 알고리즘 정의에 varargout이 포함된 경우 nargout 출력값은 음수입니다.
clone속성값이 같은 동일한 유형의 또 다른 객체를 생성합니다.
isLocked객체가 호출되었는지 여부와 아직 객체에 대해 release를 호출하지 않았는지 여부를 나타내는 논리값을 반환합니다.
isDonematlab.system.mixin.FiniteSource에서 상속되는 소스 객체에만 적용됩니다. 데이터 파일 끝에 도달했는지 여부를 나타내는 논리값을 반환합니다. 특정 객체에 데이터 끝 기능이 없는 경우 이 함수 값은 항상 false를 반환합니다.

참고 항목

관련 항목