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 に答える