2013-08-23 117 views
0

我想創建一個有不同行大小的矩陣,但我不知道從哪裏開始。不同行大小的矩陣與矩陣

我有一個函數可以產生5000個光子的時間標記。並非所有這些光子都會產生有意義的拍號。該功能丟棄這些簽名。我也是在這個功能迭代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列了一些行數與列變化。我不確定什麼是一個好的解決方案。

回答

2

你也可以嘗試使用單元陣列。單元陣列可能會慢一點,但他們可以完成這項工作。

photon_timestamps {i} = vector;

然後每個元素photon_timestamps {i}可以是不同的大小。

也是你的塊

if timestamp == 0 
continue; 
end; 

需要別的部分吧?

0

我認爲MATLAB中的矩陣必須是矩形(m x n)。您可以將NaN的非值作爲佔位符。我通常這樣做的方式是通過放置NaN來定義嵌套for循環中的矩陣的尺寸並丟棄元素。

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

我不完全理解所有的變量,所以我不能把它直接在你的功能,但你可能可以把它放在那裏的地方。