본문 바로가기

MATLAB/ㄴ 기타

Mastering Programming with MATLAB_Arguments(인수)



1. Name-Value Pairs

 

 


function result = name_value_pairs(varargin)

if mod(nargin, 2) == 1 % 입력인수의 개수가 짝수인지 확인 // 입력인수의 개수가 홀수면 빈 셀 배열을 반환
    result = { };
    return;
end

result = cell(nargin/2, 2); % name-value쌍을 저장할 셀 배열 초기화

for i = 1:2:nargin % 입력인수를 반복하며 result의 셀 배열을 채움
    name = varargin{i};
    value = varargin{i+1};

    if ~ischar(name) % 이름이 char 벡터인지 확인 // char 벡터가 아니면 빈 셀 배열을 반환
        result = { };
        return;
    end

    result{(i+1)/2, 1} = name; % 결과 셀 배열에 name-value쌍 저장
    result{(i+1)/2, 2} = value;
end
end


 

 

2. Data Entry

 


function newDatabase = voters(database, varargin)
    
    if isempty(database) % database가 비어있는 경우
        newDatabase = struct('Name', { }, 'ID', [ ]);
    else
        newDatabase = database;
    end

    if nargin <2 || mod(numel(varargin), 2) ~= 0 % 인수의 갯수가 홀수이거나 올바르지 않은 데이터의 형식이 포함된 경우를 체크
        return;
    end

    voterCount = numel(newDatabase); % index 체크

    for i = 1:2:numel(varargin)
        if ischar(varargin{i})
            name = varargin{i};
        else
            continue;
        end

        id = varargin{i+1};
        
        if isnumeric(id) && isscalar(id) && (id >= 0)
            voterCount = voterCount + 1;
            newDatabase(voterCount).Name = name;
            newDatabase(voterCount).ID = double(id);
        else
            continue;
        end
    end
end