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 列,其中一些行数随列而变化。我不确定什么是好的解决方案。

4

2 回答 2

2

您也可以尝试使用元胞数组。元胞数组可能会慢一点,但它们可以完成这项工作。

photon_timestamps{i} = 向量;

那么每个元素 photon_timestamps{i} 可以是不同的大小。

也是你的块

if timestamp == 0
continue;
end;

需要其他部分吗?

于 2013-08-24T16:02:02.117 回答
0

我认为 MATLAB 中的矩阵必须是矩形(mxn)。您可以将非值替换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

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

于 2013-08-23T23:18:15.150 回答