2012-09-20 3 views
1

분류를 위해 저는 MATLAB에서 분류자를위한 많은 모델을 만들고 있습니다. 나는 이것을 위해 ClassificationKNN 클래스를 사용한다. 매트릭스 안에 여러 모델 (또는이 클래스의 객체)을 저장하고 싶습니다. 일반적으로 중괄호 ({})를 사용하여 행렬에 액세스하고 행렬을 만들 수 있습니다. 내 루프는 다음과 같습니다Matlab : ClassificationKNN 클래스 객체의 행렬

models = [] 
for i = 1:length(x) 
    models = [models, {ClassificationKNN.fit(x,y)}] 
end 

불행하게도이 크기의 행렬 모델 (1,3)을 반환하지만 모든 세포가 손실 모델을 의미하는 비어 있습니다 ... 어떻게 모든 모델이되어 있는지 확인 할 수 있습니다 행렬에 저장되어 있습니까? 나중에 계산할 때 모든 모델이 필요하고 행렬의 위치가 중요하기 때문에이 작업을 수행해야합니다.
아이디어가 있으십니까?

+0

MATLABed 이후로 나는 잘못 될 수 있지만, [a, {b}] 구문은 나를 귀찮게합니다. 나는 그것을 조금 나중에 google 할 수있다. 그러나 나는 그것을 첫번째로 응시 할 것이다. 또한, 길이 (x)를 알고 있다면 항상 행렬을 미리 할당하고, 루프에서 하나를 늘리는 것은 훨씬 느립니다. –

+0

예, 매트릭스를 미리 할당하는 것이 좋습니다. 나는 그걸 좀 더 살펴볼 것입니다! – Tim

답변

0

모델의 셀 배열을 원하십니까?

models = {} 
for ii = 1:length(x) 
    models = [models, {ClassificationKNN.fit(x,y)}] 
end 

또한, 같은 인수마다 시간 ClassificationKNN.fit(x,y) 전화를 통해 당신 루프, 예를 들어이 단지 테스트 또는 의사 코드입니다 : 즉,이 시도 작동하는지는 물론, 그런 식으로 보인다. 덧글과 마찬가지로 다음과 같이 사전 할당하는 것이 가장 좋습니다.

models = cell(length(x),1); 
for ii = 1:length(x) 
    models{ii} = ClassificationKNN.fit(x,y); 
end 

하지만 어느 쪽이든 상관 없습니다.

+0

나는 더 많은 질문을 명확히하기 위해 더미 코드를 사용했습니다. 실제 코드에서는 매번 다른 매개 변수를 사용합니다. – Tim

0

macduffs 게시 덕분에 나는 결국 어떤 일이 벌어지고 있는지 알아 냈습니다. 그의 제안을 읽는 동안, 객체의 셀 배열을 얻는다면 실제로 올바른 방법이어야한다는 것을 깨달았다.
시도한 후에 변수 편집기에서 열 때 배열이 다시 비어있는 것 같습니다. 배열에있는 첫 번째 셀을 실제로 비 었는지 아닌지 확인하려고했습니다. 그것은 내가 그것에 저장된 물건을 돌려주었습니다. 이것은 질문에 대한 답변을 의미합니다.
그런 다음 내 고유의 방법으로 되돌아 가서 잘 작동하는지 확인했습니다. 셀을 호출하면 객체도 반환됩니다.

최종선 : 변수 편집기를 신뢰하지 마십시오 ^^.