2013-08-23 4 views
0

행 크기가 다른 행렬을 만들고 싶습니다. 그러나 어디에서 시작해야할지 모르겠습니다.행 크기가 다른 Matlab 행렬

나는 5000 광자의 박자 기호를 생성하는 함수를 가지고있다. 모든 광자가 의미있는 박자 기호를 산출하는 것은 아닙니다. 그 기능은 그 서명을 버립니다. 나는 또한 내 열 벡터가 반복 될 때마다 다양한 크기있을 것이다 그러나 결코 더 모두 모두 5000

function photon_FWHM = processFates(string,num) 

for i = 1:num 
FATES = 'FATES'; 
str = int2str(i); 
filename = strcat(FATES,str); 
timestamp = Timestamp(filename); 
if timestamp == 0 
    continue; 
end; 
photon_timestamps(:,i) = timestamp; 
end; 

보다 내가 열이 다를 행의 일부 번호 5000 열이 의미하는이 기능을 통해 5000 번 반복 . 좋은 해결책이 무엇인지 모르겠습니다.

답변

2

셀 배열을 사용해 볼 수도 있습니다. 셀 어레이는 조금 느려지지만 작업을 수행 할 수 있습니다.

photon_timestamps {i} = 벡터;

각 요소 photon_timestamps {i}는 다른 크기 일 수 있습니다.

또한 블록

if timestamp == 0 
continue; 
end; 

는 다른 부분의 권리를 필요가 있겠습니까?

0

MATLAB의 행렬은 직사각형 (m x n)이어야한다고 생각합니다. 자리 표시 자로 NaN의 값이 아닌 값으로 하위 항목을 지정할 수 있습니다. 보통 이렇게하는 방법은 중첩 된 for 루프의 행렬 크기를 정의하고 NaN을 배치하여 요소를 버립니다.

for i = 1:rows 
    for j = 1:5000 
     if timestamp != 0 
      yourmatrix(i, j) = timestamp; 
     else 
      yourmatrix(i, j) = NaN; 
     end 
    end 
end 

나는 완전히 모든 변수를 이해하지 못하는, 그래서 함수에 직접 넣을 수는 없지만, 당신은 아마 어딘가에서 그것을 넣을 수 있습니다.