2012-11-20 2 views
1
fname = dir('*sir'); 
[tmp, head] = loadsir(fname(1).name); 
dayh99 = zeros(length(fname),size(tmp,1),size(tmp,2)); %41-100,1360,3600 

% use temporary array to simplify 3d array creation 
for i=1:length(fname) 
    tmp = loadsir(fname(i).name); 
    dayh99(i,:,:) = tmp; 
end 

관심의 내 영역은Matlab 배열 자르기?

dayh99(i,:,:) = tmp; 

TMP는 기본적으로 배열 1360X3600입니다. 문제는 그 전체 배열을 dayh99에 저장할 필요가 없다는 것입니다. (그것은 이미지 데이터를 나타내며 그 이미지의 일부에만 관심이 있습니다.) 데이터를 플롯하거나자를 수 없었기 때문에 아직 배열의 어느 부분이 필요한지 확실하지 않습니다. 감사. 당신이 dayh99에 TMP의 일부만을 넣어하려는 경우

+1

원하는 이미지의 부분을 모르는 경우 어떻게해야합니까? – PearsonArtPhoto

+0

@Pearsonartphoto 사진 작가처럼 보입니다. 반드시 알 필요가 있습니다. –

+0

배열의 일부에 []을 지정하여자를 수 있습니다. 예 : tmp (끝 -10 : 끝, :) = []; – grantnz

답변

0

바로 사용 색인 :

함수
j1 = 10 
j2 = 12 
k1 = 10 
k2 = 12 

dayh99 = zeros(length(fname), j2-j1, k2-k1) 
dayh99(i, :, :) = tmp([j1:j2], [k1:k2]) 

이 버그가 있다면 나 또한 잘 모르겠지만, 내가 생각하지 않는다있다 당신이 그것을 만들지 않는다면, 로드러라고 불린다.

+0

예 ".sir"파일을 읽는 데 사용되는 파일입니다. 나는 그것을 시도 할 것이다. – Supa

+0

그래,이 시도했지만 작동하지 않았다. [Example] (http://img805.imageshack.us/img805/434/4f8f6f9e100446ddadf3227.png) – Supa

0

같은 그들을 슬라이스로 어떻게 MATLAB에서 당신이 작물의 배열입니다 :

cropped_array=array(1:10,1:10) 

당신도 할 수처럼 멋진 물건 : 목록에 매 10 번째 변수를 넣어 것입니다

cropped_array=array(1:10:100,1:10:100) 

.

+0

글쎄 그것은 1 : x에서 효과가 있었지만 1을 증가 시켰을 때는 그렇지 않았습니다. 어떻게 dayh99와 일치하도록 0을 조정하겠습니까? 'dayh99 = 0 (길이 (fname), 610,620); dayh99 (i, :, :) = tmp (240 : 850,130 : 750); ' – Supa

+0

기본적으로 두 배열의 크기가 일치해야합니다. 따라서 dayh99 호출에 동일한 영역을 넣어야합니다. 즉, dayh99 (i, 240 : 850,130 : 750)을 사용하거나, 어떻게 든 상쇄 할 수 있습니다. : 611, 621)'. – PearsonArtPhoto

+0

그래, 난 그걸로 일치하도록 0을 조정하는 방법을 궁금 해서요. – Supa