处理Matlab中的错误数据

时间:2013-08-23 11:21:50

标签: matlab time-series

我正在使用以下代码

计算Matlab中横截面时间序列数据的z分数
bond_price = double(bond);
 for i = 1+period : noofdates
    zscores(i-period,:) = (bond_price(i,:) - mean(bond_price(i-period:i-1,:)))./std(bond_price(i-period:i-1,:));
end

我使用的是句号= 60 但问题是如果安全数据少于60个数据点,我不想计算z得分。我可以在Matlab中使用一个函数,它将在循环中处理这个问题。

2 个答案:

答案 0 :(得分:2)

我想你只想要这个:

bond_price = double(bond);
for i = 1+period : noofdates
    if size(bond_price,1) >= 60
        zscores(i-period,:) = (bond_price(i,:) - mean(bond_price(i-period:i-1,:)))./std(bond_price(i-period:i-1,:));
    end    
end

答案 1 :(得分:1)

您可以在循环中添加if语句,以检查数据的有效性。例如

bond_price_tmp = bond_price(i-period:i-1,:);

if sum(isnan(bond_price_tmp)) > 0   %if your missing data is NaN 
    zscores(i-period,:) = NaN;
else
    zscores(i-period,:) = (bond_price(i,:) ...
end

if sum(bond_price_tmp==0) > 0       %if your missing data is 0
    zscores(i-period,:) = 0;
else
    zscores(i-period,:) = (bond_price(i,:) ...
end