beta = 1E-6; % smoothness factor % read data, data is already given on equidistant grid [ X, F ] = textread ( 'filter1d.csv', '%f,%f' ); [ N, M ] = size ( X ); % compute gridwidth h = ( X ( N ) - X ( 1 ) ) / ( N - 1 ); h2 = h * h; % reset L = zeros ( N, N ); r = zeros ( 1, N ); % fill matrix and right hand side for i = 1 : N if i == 1 | i == N % point on boundary L ( i, i ) = 1; r ( i ) = F ( i ); else % point in interior L ( i, i ) = 2 * beta / h2 + 1; L ( i, i - 1 ) = - beta / h2; L ( i, i + 1 ) = - beta / h2; r ( i ) = F ( i ); end end % solve linear equation system U = L \ r'; % plot original and smoothed profile plot ( X, F, X, U );