1000x1 (또는 그 이상)의 셀 배열 VsCell이 있습니다. VsCell의 각 항목은 501x567 매트릭스입니다. 나는 세포에 포함 된 모든 행렬에서 한 위치를 차지하는 원소를 추출하고자합니다. 기본적으로 다음과 같습니다.matlab 셀 어레이의 n 번째 요소 선택
셀의 배열의 모든 첫 번째 요소 VsCell {:} (2,1) - 배열의 모든 첫 번째 행 2 요소 세포에서.
그런 다음이 선택의 평균 또는 중간 값을 취하여 VsCell 배열의 평균/중앙값/등을 나타내는 단일 [501x567] 매트릭스 배열을 채 웁니다. 평균 (VsCell {:} (1,1)).
VsCell {:} (1,1)을 시도했지만 "잘못된 셀 참조 연산"을 반환합니다.
또한 루프/cellfun에 거의 없거나 전혀없이이 작업을 수행 할 수 있습니까? 온라인에서 찾은 예제를 사용하여 실제로이 작업을 수행 할 수 없었습니다.
시간 내 주셔서 대단히 감사합니다. 필요한 경우 추가로 명확하게 설명 드리겠습니다.
감사합니다. @Andras! 당신 말이 맞습니다, 나는 속도로 배열을 사용하기로했습니다. 고양이는 일에 너무 나쁘지 않습니다. 내 데이터 집합이 실제로 커질 수 있으므로 중첩 된 for-loop를 사용하는 것보다 낫습니다. – QP1
cat 메서드는 배열의 크기 제한까지 작동합니다. 그 후에 메모리 오류가 발생합니다. 당신은 아마 어떤 제안이 있습니까. 나는이 시점에서 cellfun 또는 for 루프 구현에도 신경 쓰지 않을 것이다. 덕분에 – QP1
@ QP1이 흥미 롭습니다.'cat()'이후의 배열은 셀 자체보다 공간이 적습니다. 두 가지 가능한 설명은 (1) 데이터가 너무 커서 한 번에 하나의 복사본 만 메모리에 저장되므로 원래 셀 + 새 배열이 너무 많거나 (2)'cat'에 메모리 오버 헤드가 있습니다. 두 번째 경우에는 'VsMat = 0'([크기 (VsCell {1}, 길이 (VsCell));}로 미리 할당 한 다음'ks '에 대한 루프에서'VsMat (:, : 'cat'을 사용하는 대신에,'cat'을 사용하는 것이 좋습니다. 첫 번째 경우에는 쉬운 방법이 있는지 확신 할 수 없으므로 두 번째 우선 시도하십시오;) –