具有不同行大小的Matlab矩阵

时间:2013-08-23 22:36:20

标签: matlab matrix row varying

我想创建一个具有不同行大小的矩阵,但我不知道从哪里开始。

我有一个产生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 个答案:

答案 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

我并不完全理解你的所有变量,所以我不能直接把它放在你的函数中,但是你可以把它放在某个地方。