Main Content

bodeplot

추가적인 플롯 사용자 지정 옵션으로 보드 주파수 응답 플로팅

    설명

    bodeplot을 사용하면 bode보다 광범위한 플롯 사용자 지정 옵션으로 동적 시스템 모델의 보드 크기와 위상을 플로팅할 수 있습니다. bodeplot을 사용하여 plot 핸들을 구할 수 있으며 축 레이블, 제한, 단위를 수정하는 등 플롯을 사용자 지정할 수도 있습니다. 또한 bodeplot을 사용하면 axes 핸들에 의해 표현된 기존 좌표축 세트에 보드 응답 플롯을 그릴 수도 있습니다. plot 핸들을 사용하여 기존 보드 플롯을 사용자 지정하려면 다음을 수행합니다.

    1. plot 핸들을 구합니다.

    2. getoptions를 사용하여 옵션 세트를 구합니다.

    3. setoptions를 사용해 플롯을 업데이트하여 필요한 옵션을 수정합니다.

    자세한 내용은 Customizing Response Plots from the Command Line 항목을 참조하십시오. 디폴트 옵션을 사용하여 보드 플롯을 만들거나 주파수 응답 데이터를 추출하려면 bode를 사용합니다.

    예제

    h = bodeplot(sys)동적 시스템 모델 sys의 보드 크기와 위상을 플로팅하고 플롯에 대한 plot 핸들 h를 반환합니다. getoptions 명령과 setoptions 명령에서 이 핸들 h를 사용하여 플롯을 사용자 지정할 수 있습니다. sys가 MIMO(다중 입력 다중 출력) 모델인 경우 bodeplot은 여러 보드 플롯의 그리드를 생성하는데 각각의 플롯은 한 입력/출력 쌍의 주파수 응답을 보여줍니다.

    예제

    h = bodeplot(sys1,sys2,...,sysN)은 여러 동적 시스템 sys1,sys2,…,sysN의 주파수 응답을 동일한 플롯에 플로팅합니다. 이 구문을 사용하려면 모든 시스템이 동일한 개수의 입력과 출력을 가져야 합니다.

    예제

    h = bodeplot(sys1,LineSpec1,...,sysN,LineSpecN)은 각 시스템의 보드 응답에 대해 선 스타일, 마커 유형, 색을 설정합니다. 이 구문을 사용하려면 모든 시스템이 동일한 개수의 입력과 출력을 가져야 합니다.

    h = bodeplot(AX,___)는 핸들 AX를 사용하여 현재 Figure의 Axes 또는 UIAxes 객체에 보드 응답을 플로팅합니다. 앱 디자이너에서 bodeplot을 사용하여 앱을 만드는 경우 이 구문을 사용하십시오.

    예제

    h = bodeplot(___,plotoptions)plotoptions에 지정된 옵션 세트를 사용하여 보드 주파수 응답을 플로팅합니다. 이러한 옵션은 명령줄을 사용하여 보드 플롯의 모양을 사용자 지정하는 데 사용할 수 있습니다. plotoptions에서 지정한 설정은 bodeplot을 실행하는 MATLAB® 세션에서 기본 설정을 재정의합니다. 따라서 이 구문은 개별 시스템의 기본 설정에 관계없이 동일한 모양의 여러 플롯을 생성하는 스크립트를 작성하려는 경우 유용합니다.

    예제

    h = bodeplot(___,w)w의 주파수로 지정된 주파수에 대한 시스템 응답을 플로팅합니다.

    • w{wmin,wmax} 형식의 셀형 배열인 경우 bodeplotwminwmax 사이의 주파수에서 응답을 플로팅합니다.

    • w가 주파수로 구성된 벡터인 경우 bodeplot은 지정된 각 주파수에서의 응답을 플로팅합니다.

    w와 위에 열거된 구문에 나와 있는 입력 인수를 원하는 대로 조합하여 사용할 수 있습니다.

    로그 간격의 주파수 벡터를 생성하려면 logspace를 참조하십시오.

    예제

    모두 축소

    이 예제에서는 plot 핸들을 사용하여 주파수 단위를 Hz로 변경하고 위상 플롯을 끕니다.

    5개의 상태를 갖는 무작위 상태공간 모델을 생성하고 plot 핸들 h를 사용하여 보드 플롯을 만듭니다.

    rng("default")
    sys = rss(5);
    h = bodeplot(sys);

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents sys. Axes object 2 contains an object of type line. This object represents sys.

    단위를 Hz로 변경하고 위상 플롯이 표시되지 않도록 합니다. 이를 위해 setoptions를 사용하여 plot 핸들 h의 속성을 편집합니다.

    setoptions(h,'FreqUnits','Hz','PhaseVisible','off');

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    setoptions를 호출하면 보드 플롯이 자동으로 업데이트됩니다.

    bodeoptions 명령을 사용하여 필요한 플롯 옵션을 지정할 수도 있습니다. 먼저 툴박스 기본 설정에 따라 옵션 세트를 만듭니다.

    p = bodeoptions('cstprefs');

    주파수 단위를 Hz로 설정하여 옵션 세트의 속성을 변경하고 위상 플롯을 숨깁니다.

    p.FreqUnits = 'Hz';
    p.PhaseVisible = 'off';
    bodeplot(sys,p);

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    동일한 옵션 세트를 사용하면 동일한 사용자 지정으로 여러 보드 플롯을 만들 수 있습니다. 사용자 고유의 툴박스 기본 설정에 따라, 이 플롯과 다른 모양의 플롯을 얻게 될 수 있습니다. 이 예제의 PhaseVisibleFreqUnits처럼 툴박스 기본 설정 중에서 명시적으로 설정하는 속성들만 재정의됩니다.

    이 예제에서는 제목에 15포인트의 빨간색 텍스트를 사용하는 보드 플롯을 생성합니다. 이 플롯은 생성된 MATLAB 세션의 기본 설정에 관계없이 동일하게 보여야 합니다.

    먼저 bodeoptions를 사용하여 디폴트 옵션 세트를 만듭니다.

    opts = bodeoptions;

    그런 다음, 옵션 세트 opts의 필요한 속성을 변경합니다.

    opts.Title.FontSize = 15;
    opts.Title.Color = [1 0 0];
    opts.FreqUnits = 'Hz';

    이제 옵션 세트 opts를 사용하여 보드 플롯을 만듭니다.

    bodeplot(tf(1,[1,1]),opts);

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents untitled1. Axes object 2 contains an object of type line. This object represents untitled1.

    opts가 고정된 옵션 세트로 시작하기 때문에 플롯 결과는 MATLAB 세션의 툴박스 기본 설정과 관계없습니다.

    이 예제에서는 다음과 같은 연속시간 SISO 동적 시스템의 보드 플롯을 만듭니다. 그런 다음, 그리드를 켜고 플롯의 이름을 바꾸고 주파수 스케일을 변경합니다.

    sys(s)=s2+0.1s+7.5s4+0.12s3+9s2.Continuous-time SISO dynamic system

    전달 함수 sys를 만듭니다.

    sys = tf([1 0.1 7.5],[1 0.12 9 0 0]);

    그런 다음, bodeoptions를 사용하여 옵션 세트를 만들고 필요한 플롯 속성을 변경합니다.

    plotoptions = bodeoptions;
    plotoptions.Grid = 'on';
    plotoptions.FreqScale = 'linear';
    plotoptions.Title.String = 'Bode Plot of Transfer Function';

    이제 사용자 지정 옵션 세트 plotoptions를 사용하여 보드 플롯을 만듭니다.

    bodeplot(sys,plotoptions)

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents sys. Axes object 2 contains an object of type line. This object represents sys.

    bodeplot은 시스템 동역학을 기반으로 플롯 범위를 자동으로 선택합니다.

    이 예제에서는 입력 3개, 출력 3개, 상태 3개인 MIMO 상태공간 모델이 있다고 가정하겠습니다. 선형 주파수 스케일을 사용하여 보드 플롯을 만들고 주파수 단위를 Hz로 지정한 다음, 그리드를 켭니다.

    MIMO 상태공간 모델 sys_mimo를 만듭니다.

    J = [8 -3 -3; -3 8 -3; -3 -3 8];
    F = 0.2*eye(3);
    A = -J\F;
    B = inv(J);
    C = eye(3);
    D = 0;
    sys_mimo = ss(A,B,C,D);
    size(sys_mimo)
    State-space model with 3 outputs, 3 inputs, and 3 states.
    

    plot 핸들 h를 사용하여 보드 플롯을 만들고 사용 가능한 옵션 목록을 얻기 위해 getoptions를 사용합니다.

    h = bodeplot(sys_mimo);
    p = getoptions(h)
    p =
    
                       FreqUnits: 'rad/s'
                       FreqScale: 'log'
                        MagUnits: 'dB'
                        MagScale: 'linear'
                      MagVisible: 'on'
                 MagLowerLimMode: 'auto'
                      PhaseUnits: 'deg'
                    PhaseVisible: 'on'
                   PhaseWrapping: 'off'
                   PhaseMatching: 'off'
               PhaseMatchingFreq: 0
        ConfidenceRegionNumberSD: 1
                     MagLowerLim: 0
              PhaseMatchingValue: 0
             PhaseWrappingBranch: -180
                      IOGrouping: 'none'
                     InputLabels: [1x1 struct]
                    OutputLabels: [1x1 struct]
                    InputVisible: {3x1 cell}
                   OutputVisible: {3x1 cell}
                           Title: [1x1 struct]
                          XLabel: [1x1 struct]
                          YLabel: [1x1 struct]
                       TickLabel: [1x1 struct]
                            Grid: 'off'
                       GridColor: [0.1500 0.1500 0.1500]
                            XLim: {3x1 cell}
                            YLim: {6x1 cell}
                        XLimMode: {3x1 cell}
                        YLimMode: {6x1 cell}
    

    setoptions를 사용하여 필요한 사용자 지정 옵션으로 플롯을 업데이트합니다.

    setoptions(h,'FreqScale','linear','FreqUnits','Hz','Grid','on');

    Figure contains 18 axes objects. Axes object 1 with title From: In(1) contains an object of type line. This object represents sys\_mimo. Axes object 2 contains an object of type line. This object represents sys\_mimo. Axes object 3 contains an object of type line. This object represents sys\_mimo. Axes object 4 contains an object of type line. This object represents sys\_mimo. Axes object 5 contains an object of type line. This object represents sys\_mimo. Axes object 6 contains an object of type line. This object represents sys\_mimo. Axes object 7 with title From: In(2) contains an object of type line. This object represents sys\_mimo. Axes object 8 contains an object of type line. This object represents sys\_mimo. Axes object 9 contains an object of type line. This object represents sys\_mimo. Axes object 10 contains an object of type line. This object represents sys\_mimo. Axes object 11 contains an object of type line. This object represents sys\_mimo. Axes object 12 contains an object of type line. This object represents sys\_mimo. Axes object 13 with title From: In(3) contains an object of type line. This object represents sys\_mimo. Axes object 14 contains an object of type line. This object represents sys\_mimo. Axes object 15 contains an object of type line. This object represents sys\_mimo. Axes object 16 contains an object of type line. This object represents sys\_mimo. Axes object 17 contains an object of type line. This object represents sys\_mimo. Axes object 18 contains an object of type line. This object represents sys\_mimo.

    setoptions를 호출하면 보드 플롯이 자동으로 업데이트됩니다. MIMO 모델의 경우 bodeplot은 여러 보드 플롯으로 구성된 배열을 생성하며, 각각의 플롯은 I/O 쌍 하나의 주파수 응답을 표시합니다.

    이 예제에서는 1rad/sec에서의 위상이 150도가 되도록 시스템 응답의 위상을 일치시킵니다.

    먼저, plot 핸들 h를 사용하여 전달 함수 시스템의 보드 플롯을 만듭니다.

    sys = tf(1,[1 1]); 
    h = bodeplot(sys);

    getoptions를 사용하여 플롯 특성을 구합니다. PhaseMatchingFreqPhaseMatchingValue 속성을 변경하여 위상을 지정된 주파수에 맞게 일치시키십시오.

    p = getoptions(h); 
    p.PhaseMatching = 'on'; 
    p.PhaseMatchingFreq = 1; 
    p.PhaseMatchingValue = 150;

    setoptions를 사용해 플롯을 업데이트합니다.

    setoptions(h,p);

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents sys. Axes object 2 contains an object of type line. This object represents sys.

    첫 번째 보드 플롯의 위상은 1rad/s 주파수에서 -45도입니다. 1rad/s에서 위상이 거의 150도가 되도록 위상 정합 옵션을 설정하면 두 번째 보드 플롯이 생성됩니다. 그러나 위상은 -45 + N*360만 가능합니다. 여기서 N은 정수입니다. 따라서 플롯은 허용 가능한 가장 가까운 위상, 즉 315도(즉, 1*360-45=315oEquation of how the allowable phase is calculated)로 설정됩니다.

    이 예제에서는 상태가 각각 2개와 6개이고 2 σ 신뢰영역이 적용된 두 개의 식별된 상태공간 모델의 주파수 응답을 비교합니다.

    식별된 상태공간 모델 데이터를 불러오고 n4sid를 사용하여 두 모델을 추정합니다. n4sid를 사용하려면 System Identification Toolbox 라이선스가 필요합니다.

    load iddata1
    sys1 = n4sid(z1,2); 
    sys2 = n4sid(z1,6);

    두 시스템의 보드 플롯을 만듭니다.

    bodeplot(sys1,'r',sys2,'b');
    legend('sys1','sys2');

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1 contains 2 objects of type line. These objects represent sys1, sys2. Axes object 2 contains 2 objects of type line. These objects represent sys1, sys2.

    플롯에서 두 모델 모두 데이터에 대해 약 70%의 피팅을 생성하는 것을 알 수 있습니다. 그러나 sys2는 주파수 응답에서 더 높은 불확실성을 나타내며, 특히 나이퀴스트 주파수에 가까울수록 그러합니다. 이제 linspace를 사용하여 주파수의 벡터를 만들고 주파수 벡터 w를 사용하여 보드 응답을 플로팅합니다.

    w = linspace(8,10*pi,256);
    h = bodeplot(sys1,sys2,w);
    legend('sys1','sys2');

    setoptions를 사용하여 위상 정합을 켜고 신뢰영역의 표준편차를 지정합니다.

    setoptions(h,'PhaseMatching','on','ConfidenceRegionNumberSD',2);

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1 contains 2 objects of type line. These objects represent sys1, sys2. Axes object 2 contains 2 objects of type line. These objects represent sys1, sys2.

    showconfidence 명령을 사용하여 보드 플롯에 신뢰영역을 표시할 수 있습니다.

    showConfidence(h)
    

    이 예제에서는 입력/출력 데이터에서 식별된 모수적 모델의 주파수 응답을 동일한 데이터를 사용하여 식별된 비모수적 모델의 주파수 응답과 비교합니다. 데이터를 기반으로 모수적 모델과 비모수적 모델을 식별합니다.

    데이터를 불러오고 각각 tfestspa를 사용하여 모수적 모델과 비모수적 모델을 만듭니다.

    load iddata2 z2;
    w = linspace(0,10*pi,128);
    sys_np = spa(z2,[],w);
    sys_p = tfest(z2,2);

    spatfest는 System Identification Toolbox™ 소프트웨어가 필요합니다. 모델 sys_np는 식별된 비모수적 모델이며 sys_p는 식별된 모수적 모델입니다.

    위상 정합과 그리드를 켜기 위해 옵션 세트를 만듭니다. 그런 다음, 이 옵션 세트를 사용해 두 시스템을 모두 포함하는 보드 플롯을 만듭니다.

    plotoptions = bodeoptions;  
    plotoptions.PhaseMatching = 'on';
    plotoptions.Grid = 'on';
    bodeplot(sys_p,sys_np,w,plotoptions);
    legend('Parametric Model','Non-Parametric model');

    Figure contains 2 axes objects. Axes object 1 with title From: u1 To: y1 contains 2 objects of type line. These objects represent Parametric Model, Non-Parametric model. Axes object 2 contains 2 objects of type line. These objects represent Parametric Model, Non-Parametric model.

    입력 인수

    모두 축소

    동적 시스템으로, SISO 또는 MIMO 동적 시스템 모델로 지정되거나 동적 시스템 모델로 구성된 배열로 지정됩니다. 사용 가능한 동적 시스템에는 다음이 포함됩니다.

    • 연속시간 또는 이산시간 수치적 LTI 모델(예: tf, zpk, ss 모델).

    • 희소 상태공간 모델(예: sparss 또는 mechss 모델). 희소 모델의 경우 주파수 그리드 w를 지정해야 합니다.

    • 일반화된 모델 또는 불확실 LTI 모델(예: genss, uss (Robust Control Toolbox) 모델). (불확실 모델을 사용하려면 Robust Control Toolbox™가 필요합니다.)

      • 조정 가능한 제어 설계 블록의 경우, 이 함수는 현재 값에서 모델을 계산하여 주파수 응답 데이터를 플로팅합니다.

      • 불확실한 제어 설계 블록의 경우, 이 함수는 모델의 공칭 값과 임의 샘플을 플로팅합니다.

    • 주파수 응답 데이터 모델(예: frd 모델). 이러한 모델의 경우, 이 함수는 모델에서 정의된 주파수에서 응답을 플로팅합니다.

    • 식별된 LTI 모델(예: idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox) 모델). 이러한 모델의 경우, 이 함수는 신뢰구간을 플로팅하고 주파수 응답의 표준편차를 반환할 수도 있습니다. 식별된 모델의 보드 플롯 항목을 참조하십시오. (식별된 모델을 사용하려면 System Identification Toolbox™가 필요합니다.)

    sys가 모델로 구성된 배열인 경우 함수는 배열의 모든 모델의 주파수 응답을 동일한 좌표축에 플로팅합니다.

    선 스타일, 마커 및 색으로, 기호를 포함하는 문자형 벡터 또는 string형으로 지정됩니다. 기호는 어떤 순서로 지정해도 좋습니다. 세 가지 특성(선 스타일, 마커, 색)을 모두 지정할 필요는 없습니다. 예를 들어 선 스타일을 생략하고 마커를 지정하면 플롯은 마커만 표시하고 선은 표시하지 않습니다.

    예: '--or'은 원형 마커가 있는 빨간색 파선입니다.

    선 스타일설명
    -실선
    --파선
    :점선
    -.일점 쇄선
    마커설명
    'o'
    '+'플러스 기호
    '*'별표
    '.'
    'x'십자
    '_'가로선
    '|'세로선
    's'정사각형
    'd'다이아몬드
    '^'위쪽 방향 삼각형
    'v'아래쪽 방향 삼각형
    '>'오른쪽 방향 삼각형
    '<'왼쪽 방향 삼각형
    'p'펜타그램
    'h'헥사그램
    설명

    y

    노란색

    m

    자홍색

    c

    녹청색

    r

    빨간색

    g

    녹색

    b

    파란색

    w

    흰색

    k

    검은색

    대상 좌표축으로, AxesUIAxes 객체로 지정됩니다. 좌표축을 지정하지 않고 현재 좌표축이 카테시안 좌표축인 경우, bodeplot은 현재 좌표축에 플로팅합니다. 앱 디자이너에서 앱을 만들 때 특정 좌표축에 플로팅하려면 AX를 사용하십시오.

    보드 플롯 옵션 세트로, BodePlotOptions 객체로 지정됩니다. 이 옵션 세트를 사용하여 보드 플롯의 모양을 사용자 지정할 수 있습니다. 옵션 세트를 만들려면 bodeoptions를 사용합니다. plotoptions에서 지정한 설정은 bodeplot을 실행하는 MATLAB 세션에서 기본 설정을 재정의합니다. 따라서 plotoptions는 개별 시스템의 기본 설정에 관계없이 동일한 모양의 여러 플롯을 생성하는 스크립트를 작성하려는 경우 유용합니다.

    사용 가능한 옵션 목록은 bodeoptions 항목을 참조하십시오.

    주파수 응답을 계산하고 플로팅할 주파수로, 셀형 배열 {wmin,wmax} 또는 주파수 값으로 구성된 벡터로 지정됩니다.

    • w{wmin,wmax} 형식의 셀형 배열인 경우 함수는 wminwmax 사이의 주파수에서 응답을 계산합니다.

    • w가 주파수로 구성된 벡터인 경우 함수는 지정된 각 주파수에서 응답을 계산합니다. 예를 들어, logspace를 사용하여 로그 간격의 주파수 값을 갖는 행 벡터를 생성할 수 있습니다.

    주파수는 rad/TimeUnit 단위로 지정합니다. 여기서 TimeUnit은 모델의 TimeUnit 속성입니다.

    출력 인수

    모두 축소

    plot 핸들로, handle 객체로 반환됩니다. getoptionssetoptions를 사용하여 보드 플롯의 속성을 가져오고 설정하려면 핸들 h를 사용하십시오. 사용 가능한 옵션 목록은 Customizing Response Plots from the Command Line 항목에서 속성 및 값 도움말 섹션을 참조하십시오.

    버전 내역

    R2006a 이전에 개발됨