我想创建一个具有不同行大小的矩阵,但我不知道从哪里开始。
我有一个产生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列,其中一些行随列而变化。我不确定什么是好的解决方案。
答案 0 :(得分:2)
您也可以尝试使用单元格数组。单元阵列可能稍慢,但它们可以完成这项工作。
photon_timestamps {i} = vector;
然后每个元素photon_timestamps {i}可以有不同的大小。
也是你的块
if timestamp == 0
continue;
end;
还需要其他部分吗?
答案 1 :(得分:0)
我认为MATLAB中的矩阵必须是矩形(m×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
我并不完全理解你的所有变量,所以我不能直接把它放在你的函数中,但是你可以把它放在某个地方。