function my_prices=fillMissingData(prices, varargin) % my_prices=fillMissingData(prices) fills missing price with previous % day's price % my_prices=fillMissingData(prices, tday, cday) fills missing prices with previous day's price including non-trading days % as specified in cday if (nargin == 1) my_prices=prices; for t=2:size(my_prices, 1) missData=~isfinite(my_prices(t, :, :)); my_prices(t, missData)=my_prices(t-1, missData); end else % We deal only with 2 dim prices array here. tday=varargin{1}; cday=varargin{2}; my_prices=NaN*zeros(size(cday, 1), size(prices, 2)); tdayIdx=find(tday==cday(1)); if (~isempty(tdayIdx)) my_prices(1, :)=prices(tdayIdx, :); end for t=2:size(my_prices, 1) tdayIdx=find(tday==cday(t)); if (~isempty(tdayIdx)) my_prices(t, :)=prices(tdayIdx, :); missData=find(~isfinite(my_prices(t, :))); my_prices(t, missData)=my_prices(t-1, missData); else my_prices(t, :)=my_prices(t-1, :); end end end