了解逻辑索引
你用这个命令做什么
A = (filename)
A(A > 100) = NaN
被称为logical indexing。您基本上是在构建一个大小为numel(A) 的临时逻辑向量(布尔值、0 和1),将每个元素> 100 设置为1,并将所有其他元素设置为0。然后使用这个临时逻辑数组来索引向量A。当你这样做A(A > 100) 时会发生什么,你只选择A 中的项目,这些项目对应于逻辑向量中设置为1 的项目。为了完整起见,给定
>> A = [0 0 0 1.2 101 3.9 6.8 500];
>> indexes = A > 100
indexes = [0 0 0 0 1 0 0 1]
>> A(indexes) % This is equal to your A(A > 100)
ans = [101, 500]
缩小你的价值观
了解了这一点后,接下来要做的是将NaN 分配给选定的值:A(A > 100) = NaN。除了这样做,您可以按您需要的任何因素缩小它们,1000 在您的情况下:
>> A = [0 0 0 1.2 101 3.9 6.8 500];
>> indexes = A > 100
indexes = [0 0 0 0 1 0 0 1]
>> A(indexes) % This is equal to your A(A > 100)
ans = [101, 500]
>> A(indexes) = A(indexes) ./ 1000
A = [0 0 0 1.2 0.101 3.9 6.8 0.500]
删除值
因为您说您是 Matlab 的新手,所以我将补充一点,将元素分配给 NaN 不会将它们从您的向量中删除。您所做的可能对您有用,因为您正在绘制这些数据,而 Matlab 的 plot() 函数不会绘制值为 NaN 的数据点。
从向量中删除数据的正确方法是将其分配给一个空值[],如下所示:
>> A = [0 0 0 1.2 101 3.9 6.8 500];
>> indexes = A > 100
indexes = [0 0 0 0 1 0 0 1]
>> A(indexes) % This is equal to your A(A > 100)
ans = [101, 500]
>> A(indexes) = []
A = [0 0 0 1.2 3.9 6.8]