一連の年代順のシリアル番号を持つ配列と、数値に関連付けられたランダムなシリアル番号を持つ別のソース配列があります。MATLAB で新しいセル配列を作成し、1 つの列に完全に時系列のシリアル番号を付けて、次の列に元の両方のソース配列でシリアル番号が一致する場合に関連する数値を挿入したいと考えています。そうでない場合は、新しい一致が見つかるまで、以前に関連付けられた値をコピーしたいだけです。
例えば
source input (serial)
1
2
3
4
5
6
7
source input (random)
1 100
2 105
4 106
7 107
desired output (data)
SR No Value
1 100
2 105
3 105
4 106
5 106
6 106
7 107
現在、私が抱えている問題は、以下のコードを実行するたびに、(正しく動作している) プログラムによって繰り返し値が挿入されるはずのセル値が空のセルになってしまうことです。つまり、シリアル番号 3、5-29 の行で、等
これまでに得たコードは次のとおりです。
j = 1;
A = {serial{1:end,1}};
B = cell2mat(A);
value = random(1,2);
data(:,1) = serial(:,1);
for k = 1:length(random)
[row, col, vec] = find(B == random{k,1});
tf = isempty(vec);
if (tf ~= 1)
value = random(row,2);
data(j,2) = random(row,2);
j = j + 1;
else
data(j,2) = value;
j = j + 1;
end
end
空の値なしでこのセル配列を作成するにはどうすればよいですか?
注: 場合によっては、シリアル値が繰り返されることがあります。これらは削除できない (または削除すべきではない) 重複ですが、無限ループを回避するためにプログラムで無視する必要がある場合があります。
これを達成する方法についての提案をいただければ幸いです。