2014-07-07 2 views
1

저는 현재 기본적으로 여러 주변 장치의 데이터를 기록하는 프로그램을 작성하고 있습니다. 각 주변 장치에서 동일한 데이터를 로깅하므로이 데이터를 구조에 캡슐화 할 수있는 좋은 기회라고 생각했습니다. 원래 "C"스타일 구조로이 작업을 계획했지만, MATLAB의 문서를 파고 들자 문법이 전혀 다른 것을 깨달았습니다.MATLAB에서 일반 구조를 만드는 방법은 무엇입니까?

좀 더 구체적으로 말하면, MATLAB의 표기법에서는 1 x 6 구조가 필요합니다. C를 사용한다면 구조 프로토 타입을 정의하고 필요한만큼 인스턴스를 만들 수 있습니다. 이상적으로, 이것은 내 코드를 깨끗하게 정리할 수있게 해준다.

그러나 MATLAB은이 기능을 제공하지 않습니다. 예를 들어,이 내가하고 싶은 일을하는 방법을보고 한 방법입니다 :

patient.name = 'John Doe'; 
patient.billing = 1; 

%Create a second "instance" 
patient.name(2) = 'Someone else'; 
patient.billing(2) = 2; 

방법 위의 수행 작업, 내가 원하는대로 내가 많은 인스턴스를 추가 할 수있는. 그래도 필요한 필드가있는 일반 구조를 간단히 정의 할 수 있을지 궁금합니다. 가능한 경우, 이렇게하면 더 깨끗하고 쉽게 코드를 유지하면서 다른 주변 장치를 더 잘 구분할 수 있습니다.

건설적인 의견을 부탁드립니다.

답변

4

구조체는 원하는 경우 c과 비슷한 방법으로 만들 수 있습니다.

patient.name(2) = 'Someone else'; 
patient.billing(2) = 2; 

이것은 단순히 struct의 요소를 배열로 만듭니다. 당신이 확인하려면 당신은이 구조체의 배열을 할 것입니다 :

patient(2).name = 'Someone else'; 
patient(2).billing = 2; 

을 당신은 당신이 할 수있는 필요 필드가있는 구조체 확인하려면 :

function outstruct = createstruct(name, billing history, age) 
    outstruct = struct('name', name, 'billing', billing, 'hist ... 
end 

가 될 것이지만 그냥 함수없이 코드 본문에 쉽게 추가 할 수 있습니다.

+0

그 점을 지적 해 주셔서 감사합니다. 이전에 그 점을 눈치 채지 못했습니다. 그러나 'C'구조를 생각할 때 필자는 'typedef'라는 용어로 생각하는 경향이 있습니다. 즉, tyepdef struct {...} MyDef입니다. 이 방법을 사용하면 구조의 모든 매개 변수를 일반적으로 정의 할 수 있으며 원하는만큼 인스턴스를 만들 수 있습니다. 예를 들어, MyDef PerphOne, MyDef PerphTwo 등 – Mlagma

+0

@Mlagma 당신이 그렇게 할 수 있도록 몇 가지 세부 사항을 추가했습니다. 잘하면 그걸 정리합니다. –

+0

그래, 내가 게시 한대로 편집을 보았습니다. 나는 그것이 효과가있을 것이라고 믿습니다. 제안 주셔서 감사합니다, 나는 그것으로 주위를 어지럽히고 그것이 내가 필요한 것을하는지보십시오. – Mlagma

관련 문제