matlab 클래스를 어떻게 쓰는지
3815 단어 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
두 번째 줄과 세 번째 줄이 연결되어 있다는 뜻이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【MATLAB】변수를 스크립트에 저장MATLAB에서 계산 결과를 저장할 때 MAT 파일, Excel 등의 파일에 저장하는 것이 좋을 것이라고 생각하지만 변수의 유형에 따라 스크립트에 내보낼 수 있습니다. MATLAB을 사용해 10년 정도가 됩니다만, ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.