用指定的值替换矩阵中的值

时间:2015-06-10 14:13:30

标签: matlab for-loop replace

我有一个三维模拟数据阵列(维度 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; 

我会对任何提示感到高兴!

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