matlab 클래스를 어떻게 쓰는지

3815 단어 matlab
먼저 matlab의 클래스 코드를 보십시오:
classdef TensileData
properties
Material = 'carbon steel';
SampleNumber = 0;
Stress
Strain
end
properties (Dependent)
Modulus
end

methods
function td = TensileData(material,samplenum,stress,strain)
if nargin > 0
td.Material = material;
td.SampleNumber = samplenum;
td.Stress = stress;
td.Strain = strain;
end
end % TensileData
end

methods
function obj = set.Material(obj,material)
if ~(strcmpi(material,'aluminum') ||...
strcmpi(material,'stainless steel') ||...
strcmpi(material,'carbon steel'))
error('Material must be aluminum, stainless steel, or carbon steel')
end
obj.Material = material;
end % Material set function

function modulus = get.Modulus(obj)
ind = find(obj.Strain > 0); % Find nonzero strain
modulus = mean(obj.Stress(ind)./obj.Strain(ind));
end % Modulus get function

function obj = set.Modulus(obj,~)
fprintf('%s%d
','Modulus is: ',obj.Modulus)
error('You cannot set Modulus explicitly');
end

function disp(td)
fprintf(1,'Material: %s
Sample Number: %g
Modulus: %1.5g
',...
td.Material,td.SampleNumber,td.Modulus);
end % disp

function plot(td,varargin)
plot(td.Strain,td.Stress,varargin{:})
title(['Stress/Strain plot for Sample ',num2str(td.SampleNumber)])
xlabel('Strain %')
ylabel('Stress (psi)')
end % plot
end

methods (Access = 'private') % Access by class members only
function m = CalcModulus(td)
% Over-simplified calculation of Elastic Modulus
ind = find(td.Strain > 0); % Find nonzero strain
m = mean(td.Stress(ind)./td.Strain(ind));
end % CalcModulus
end
end % classdef

상기 코드에서
classdef TensileData
  ...
end
는 TensileData 클래스를 정의합니다.코드:
 properties      Material = 'carbon steel';      SampleNumber = 0;Stress Strain end는 클래스의 속성, 즉 C++ 클래스의 구성원 변수를 정의합니다.그러나 C++와 달리 matlab의 클래스 정의는 다음과 같은 의존 속성을 정의하는 특별한 점이 하나 더 있다.
 properties (Dependent)      Modulus   end
이것은 Modulus라는 속성이 다른 속성으로 계산된 의존 속성임을 나타낸다. 여기서 Dependent의 기본 속성 값은 True이다.
이 값은 다음 함수를 통해 수행됩니다.
% Modulus get function
function modulus = get.Modulus(obj)         ind = find(obj.Strain > 0); % Find nonzero strain         modulus = mean(obj.Stress(ind)./obj.Strain(ind));end
클래스 방법 (함수) 의 정의는methods...end의 형식으로 나왔습니다.다음과 같은 클래스 방법의 정의가 있습니다.
methods      function td = TensileData(material,samplenum,stress,strain)         if nargin > 0            td.Material = material;            td.SampleNumber = samplenum;            td.Stress = stress;            td.Strain = strain;         end      end end
이 함수 블록은 TensileData 구조 함수 방법을 정의합니다.위 코드의 마지막 메서드 methods(Access ='private')
의 Access ='private'는 클래스 자체에만 접근할 수 있고 수정할 수 있는 개인 구성원 방법임을 나타낸다.여기서 속성 Access는
SetAccess와 GetAccess, 속성 값은 Access와 같습니다.
disp 함수 문장에 "..."이 나타납니다다음 줄과 현재 줄이 연결되어 있음을 나타낸다.예:
 function disp(td)         fprintf(1,'Material: %sSample Number: %gModulus: %1.5g',...            td.Material,td.SampleNumber,td.Modulus); end
두 번째 줄과 세 번째 줄이 연결되어 있다는 뜻이다.

좋은 웹페이지 즐겨찾기