gpt4 book ai didi

matlab - 如何在 Matlab 中删除向量中的零分量?

转载 作者:太空宇宙 更新时间:2023-11-03 19:05:51 26 4
gpt4 key购买 nike

例如我有一个向量

a = [0 1 0 3]

我想把 a 变成等于 b = [1 3] 的 b。

我通常如何执行此操作?所以我有一个包含一些零分量的向量,我想删除零并只留下非零数字?

最佳答案

如果您只想删除零,将非零留在 a 中,那么最好的解决方案是

a(a==0) = [];

这将使用 MATLAB 中的逻辑索引方法删除零元素。当向量的索引是与向量长度相同的 bool 向量时,MATLAB 可以使用该 bool 结果对其进行索引。所以这相当于

a(find(a==0)) = [];

而且,当您在 MATLAB 中将一些数组元素设置为 [] 时,约定是删除它们。

如果你想把零放入一个新的结果b,同时保持a不变,最好的方法可能是

b = a(a ~= 0);

同样,这里使用了逻辑索引。您可以使用

的等效版本(就结果而言)
b = a(find(a ~= 0));

但是 mlint 最终会将该行标记为纯逻辑索引更有效的行,因此更合适。

与往常一样,如果您接受 a 的元素在零的某些 epsilonic 公差范围内,请注意对零或任何数字的精确测试。像这样做那些测试

b = a(abs(a) >= tol);

这只会保留 a 中至少与您的容差一样大的元素。

关于matlab - 如何在 Matlab 中删除向量中的零分量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com