我有一个三维模拟数据阵列(维度 10000 -by- 16 -by- 312 或#trials by TimeSeries通过视野)。我想用阈值替换高于/低于预先指定阈值的值。我已在MinAcceptableVal(:,i)
和MaxAcceptableVal(:,i)
中计算了每个时间序列的阈值。当我运行代码时,我没有收到错误消息,但高于阈值的值不会被切断。
for i=1:nIndices
simulatedReturnsEVT1(simulatedReturnsEVT1(:,i,:)<MinAcceptableVal(:,i))=MinAcceptableVal(:,i);
simulatedReturnsEVT1(simulatedReturnsEVT1(:,i,:)>MaxAcceptableVal(:,i))=MaxAcceptableVal(:,i);
end
我之前尝试过使用不同形式的代码(见下文)并且完美无缺。 Matlab似乎在为不同的时间序列变量(i
)引入不同的截止水平时遇到了问题。
simulatedReturnsEVT1(simulatedReturnsEVT1<-1)=-1;
simulatedReturnsEVT1(simulatedReturnsEVT1>1)=1;
我会对任何提示感到高兴!
答案 0 :(得分:1)
试试这样:
for i=1:nIndices
slice = simulatedReturnsEVT1(:,i,:);
slice(slice < MinAcceptableVal(i))=MinAcceptableVal(:,i);
slice(slice > MaxAcceptableVal(i))=MaxAcceptableVal(:,i);
simulatedReturnsEVT1(:,i,:) = slice;
end