一連の年代順のシリアル番号を持つ配列と、数値に関連付けられたランダムなシリアル番号を持つ別のソース配列があります。このコードは、MATLAB で新しい cell 配列を作成し、1 つの列に完全に時系列のシリアル番号を使用し、シリアル番号が両方の元のソース配列で一致する場合は、次の列に関連する数値を挿入します。そうでない場合、コードは、新しい一致が見つかるまで、以前に関連付けられた値を単純にコピーします。
j = 1;
A = {random{1:end,1}};
B = cell2mat(A);
value = random{1,2};
data = cell(length(serial), 1);
data(:,1) = serial(:,1);
h = waitbar(0,'Please Wait...');
steps = length(serial);
for k = 1:length(serial)
[row1, col1, vec1] = find(B == serial{k,1});
tf1 = isempty(vec1);
if (tf1 == 0)
prices = random{col1,2};
data(j,2) = num2cell(value);
j = j + 1;
else
data(j,2) = num2cell(value);
j = j + 1;
end
waitbar(k/steps,h,['Please Wait... ' num2str(k/steps*100) ' %'])
end
close(h);
現在、コードの実行時間は約 4 時間です。このコードをより高速に実行したいと考えています。そうするための方法を提案してください。
アップデート
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