1 日に 1 つのファイルがあり、1 か月で 30 ファイルになります。各ファイルには、以下に示すデータ形式の 86400 行が含まれます: Hour Min Sec Value1 Value2 Value3 ......行。そのため、補間を使用して欠落している行を挿入するために各ファイルをチェックするのは面倒です。時間と労力の両方を補うことができるコード。
質問する
183 次
1 に答える
1
すべてのファイルとスタック データをフォームB
に読み込むには、ファイル名のループを使用できます。
for d = 1:30
filename = sprintf('file%d.txt', d );
A{ d } = load( filename );
% complete missing values in A{d} here, for example using interpMissingRows below
A{ d } = interpMissingRows( A{ d } );
end
B = vertcat( A{:} );
欠落しているエントリを計算するには、補間することができます。
function interpData = interpMissingRows( data )
% compute seconds from 00:00:00 (assuming first entry is 0, 0, 0, val1 val2...
absSec = data(:,1:3) * [ 3600; 60; 1]; % matrix multiplication!
numValues = size(data,2) - 3; % number of colums to interpolate
totSec = 24*3600; % number of seconds in 24Hours
interpData = zeros(totSec, 3 + numValues ); % pre-allocate
interpData(:,1) = floor( (0:totSec-1)' / 3600 ); % hours
interpData(:,2) = floor( ( (0:totSec-1)' - interpData(:,1)*3600 ) / 60 ); % minutes
interpData(:,3) = mod( (0:totSec-1)', 60 ); % seconds
interpData(:, 4:end) = interp1( absSec, data(:, 4:end), (0:totSec-1)', 'linear','extrap');
于 2013-08-12T06:33:46.740 に答える