Main Content

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

slmetric.dashboard.Group 클래스

네임스페이스: slmetric.dashboard

(제거 예정) 지표 대시보드에 slmetric.dashboard.Container, slmetric.dashboard.Widgetslmetric.dashboard.CustomWidget 개체를 보관하기 위한 위젯

Metrics Dashboard 사용자 인터페이스, metricdashboard 기능, slmetric 패키지 API 및 해당 사용자 정의는 향후 릴리스에서 제거될 예정입니다. 자세한 내용은 Migrating from Metrics Dashboard to Model Maintainability Dashboard를 참조하세요.

설명

slmetric.dashboard.Group 개체는 slmetric.dashboard.Container, slmetric.dashboard.Widgetslmetric.dashboard.CustomWidget 개체를 보유할 수 있습니다. slmetric.dashboard.Group 메서드 및 속성을 사용하여 그룹 크기, 너비 및 제목을 지정할 수 있습니다.

예를 들어 이미지는 기본 메트릭 대시보드 레이아웃입니다. 지표 대시보드의 이 부분에는 Size라는 제목의 slmetric.dashboard.Group 위젯이 포함되어 있습니다. 이 그룹에는 세 개의 slmetric.dashboard.Container 위젯이 포함되어 있습니다. 왼쪽과 오른쪽의 컨테이너에는 각각 하나의 slmetric.dashboard.Widget 개체가 포함되어 있습니다. 중간 컨테이너에는 두 개의 slmetric.dashboard.Widget 개체가 포함되어 있습니다.

Size metrics in the default Metrics Dashboard layout

생성

group = slmetric.dashboard.Groupslmetric.dashboard.Group 객체에 대한 핸들을 생성합니다.

속성

모두 확장

slmetric.dashboard.Widgetslmetric.dashboard.CustomWidget 개체 그룹의 제목을 지정합니다. 제목은 그룹의 위젯 유형을 요약해야 합니다. 예를 들어, Size라는 제목의 그룹에는 모델 크기와 관련된 위젯이 포함되어 있습니다. 이 속성은 읽기/쓰기입니다.

이 위젯 유형은 그룹입니다. 이 속성은 읽기 전용입니다.

true인 경우 지표 대시보드에서 slmetric.dashboard.Group 개체 주위에 테두리가 있습니다. 이 속성은 읽기/쓰기입니다.

메서드

addWidget(삭제 예정) slmetric.dashboard.Group 개체에 위젯 추가
getMargin(삭제 예정) 그룹 가장자리에서 내용까지의 거리 확보
getPosition(삭제 예정) 지표 대시보드 내에서 그룹 위치 확보
getSeparators(제거 예정) 지표 대시보드 그룹 측면에 선이 있는지 확인
getWidgets(제거 예정) slmetric.dashboard.Group 객체에서 위젯 목록 가져오기
getWidths(제거 예정) 메트릭 대시보드 그룹의 너비 가져오기
removeWidget(제거 예정) slmetric.dashboard.Group 개체에서 위젯 제거
setMargin(제거 예정) 그룹 가장자리에서 해당 내용까지의 거리를 지정합니다.
setPosition(제거 예정) 메트릭 대시보드 내에서 그룹 위치 설정
setSeparators(제거 예정) 메트릭 대시보드 그룹 측면에 줄 지정
setWidths(제거 예정) 지표 대시보드 그룹에 대해 여러 너비 지정

예제

모두 축소

비가상 블록 수를 계산하는 사용자 지정 메트릭을 만듭니다. 지표 대시보드에 이 지표를 표시하려면 위젯을 지정하세요. 크기 그룹에 추가합니다.

다음을 입력하여 vdp 모델을 엽니다.

openExample('simulink_general/VanDerPolOscillatorExample')

사용자 정의 메트릭 클래스를 만듭니다.

className = 'nonvirtualblockcount';
slmetric.metric.createNewMetricClass(className);

이 코드를 nonvirtualblockcount.m 파일에 추가하여 비가상 블록 수 메트릭을 만듭니다.

classdef nonvirtualblockcount < slmetric.metric.Metric
    %nonvirtualblockcount calculates number of nonvirtual blocks per level.
    % BusCreator, BusSelector and BusAssign are treated as nonvirtual.
    properties
        VirtualBlockTypes = {'Demux','From','Goto','Ground', ...
            'GotoTagVisibility','Mux','SignalSpecification', ...
            'Terminator','Inport'};
    end
    
    methods
    function this = nonvirtualblockcount()
        this.ID = 'nonvirtualblockcount';
        this.Name = 'Nonvirtual Block Count';
        this.Version = 1;
        this.CompileContext = 'None';
        this.Description = 'Algorithm that counts nonvirtual blocks per level.';
        this.AggregatedValueName = 'Nonvirtual Blocks (incl. Descendants)'
        this.ValueName = 'Nonvirtual Blocks'
        this.ComponentScope = [Advisor.component.Types.Model, ...
            Advisor.component.Types.SubSystem];
        this.AggregationMode = slmetric.AggregationMode.Sum;	    
        this.ResultChecksumCoverage = true;
        this.SupportsResultDetails = true;
            
    end

    function res = algorithm(this, component)
        % create a result object for this component
        res = slmetric.metric.Result();	

        % set the component and metric ID
        res.ComponentID = component.ID;
        res.MetricID = this.ID;
        
        % Practice
        D1=slmetric.metric.ResultDetail('identifier 1','Name 1');
        D1.Value=0;
        D1.setGroup('Group1','Group1Name');
        D2=slmetric.metric.ResultDetail('identifier 2','Name 2');
        D2.Value=1;
        D2.setGroup('Group1','Group1Name');
        
        

        % use find_system to get blocks inside this component
        blocks = find_system(getPath(component), ...
            'SearchDepth', 1, ...
            'Type', 'Block');

        isNonVirtual = true(size(blocks));

        for n=1:length(blocks)
            blockType = get_param(blocks{n}, 'BlockType');

            if any(strcmp(this.VirtualBlockTypes, blockType))
                isNonVirtual(n) = false;
            else
                switch blockType
                    case 'SubSystem'
                        % Virtual unless the block is conditionally executed
                        % or the Treat as atomic unit check box is selected.
                        if strcmp(get_param(blocks{n}, 'IsSubSystemVirtual'), ...
                                'on')
                            isNonVirtual(n) = false;
                        end
                    case 'Outport'
                        % Outport: Virtual when the block resides within
                        % SubSystem block (conditional or not), and 
                        % does not reside in the root (top-level) Simulink window.
                        if component.Type ~= Advisor.component.Types.Model
                            isNonVirtual(n) = false;
                        end
                    case 'Selector'
                        % Virtual only when Number of input dimensions 
                        % specifies 1 and Index Option specifies Select 
                        % all, Index vector (dialog), or Starting index (dialog).
                        nod = get_param(blocks{n}, 'NumberOfDimensions');
                        ios = get_param(blocks{n}, 'IndexOptionArray');

                        ios_settings = {'Assign all', 'Index vector (dialog)', ...
                            'Starting index (dialog)'};

                        if nod == 1 && any(strcmp(ios_settings, ios))
                            isNonVirtual(n) = false;
                        end
                    case 'Trigger'
                        % Virtual when the output port is not present.
                        if strcmp(get_param(blocks{n}, 'ShowOutputPort'), 'off')
                            isNonVirtual(n) = false;
                        end
                    case 'Enable'
                        % Virtual unless connected directly to an Outport block.
                        isNonVirtual(n) = false;

                        if strcmp(get_param(blocks{n}, 'ShowOutputPort'), 'on')
                            pc = get_param(blocks{n}, 'PortConnectivity');

                            if ~isempty(pc.DstBlock) && ...
                                    strcmp(get_param(pc.DstBlock, 'BlockType'), ...
                                    'Outport')
                                isNonVirtual(n) = true;
                            end
                        end
                end
            end
        end

        blocks = blocks(isNonVirtual);

        res.Value = length(blocks);
    end
    end
end

메트릭 저장소에 새 메트릭을 등록합니다.

[id_metric,err_msg] = slmetric.metric.registerMetric(className);

시작하려면 메트릭 대시보드 레이아웃에 대한 기본 구성을 엽니다.

conf = slmetric.dashboard.Configuration.open();

slmetric.dashboard.Configuration 개체에서 slmetric.dashboard.Layout 개체를 가져옵니다.

layout = getDashboardLayout(conf);

레이아웃 개체에 있는 위젯 개체를 가져옵니다.

layoutWidget = getWidgets(layout);

Simulink 블록 수 메트릭을 나타내는 위젯을 제거합니다.

sizeGroup = layoutWidget(2); 
sizeGroupWidgets = sizeGroup.getWidgets(); 
sizeGroup.removeWidget(sizeGroupWidgets(1));

비가상 블록 수 메트릭을 표시하는 위젯을 추가합니다. 사용자 정의 위젯의 경우 기본 시각화 유형은 단일 값입니다. 다른 시각화 기술을 사용하려면 VisualizationType 속성에 다른 값을 지정하십시오.

newWidget = sizeGroup.addWidget('Custom', 1);
newWidget.Title = ('Nonvirtual Block Count'); 
newWidget.setMetricIDs('nonvirtualblockcount');
newWidget.setWidths(slmetric.dashboard.Width.Medium);
newWidget.setHeight(70);

사용자 정의 위젯을 그룹의 다른 위젯과 구분하는 선이 있는지 여부를 지정합니다. 이 명령은 위젯 오른쪽에 줄이 있음을 지정합니다.

s.top = false;
s.bottom = false;
s.left = false;
s.right = true;
newWidget.setSeparators([s, s, s, s]);

구성 개체를 저장합니다. 이 명령은 API 정보를 XML 파일로 직렬화합니다.

save(conf,'Filename','DashboardConfig.xml');

활성 구성을 설정합니다.

slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));

vdp 모델에 대한 지표 대시보드를 엽니다.

metricsdashboard vdp

모든 메트릭을 실행하려면 모든 메트릭 버튼을 클릭하세요.

버전 내역

R2018b에 개발됨

모두 축소

R2022a: Metrics Dashboard이 제거됩니다

Metrics Dashboard 사용자 인터페이스, metricdashboard 기능, slmetric 패키지 API 및 해당 사용자 정의는 향후 릴리스에서 제거될 예정입니다. 자세한 내용은 Migrating from Metrics Dashboard to Model Maintainability Dashboard를 참조하세요.