gpt4 book ai didi

arrays - 如何从 Matlab 中的结构数组中删除包含 NaN 的条目?

转载 作者:行者123 更新时间:2023-12-02 04:15:25 25 4
gpt4 key购买 nike

我有一个结构数组a:

a(1).s1 = NaN
a(2).s1 = 2
a(3).s1 = 4
a(4).s1 = 3

a(1).s2 = 1
a(2).s2 = NaN
a(3).s2 = NaN
a(4).s2 = 5

理想情况下,我想创建另一个结构体数组b,其中不包含s2包含NaN的条目。所以新数组 b 看起来像这样:

b(1).s1 = NaN
b(2).s1 = 3

b(1).s2 = 1
b(2).s2 = 5

我需要自动完成此操作,以便我可以将脚本应用到更大的结构数组。

我一直在尝试创建一个像这样的 for 循环:

i = 1;
for i = find(all(~isnan([a(1:4).s2]), 1));
b(i).s1 = a(i).s1;
b(i).s2 = a(i).s2;
end

但它保留了空条目。

再次尝试删除带有 NaN 的条目:

b = a;
i = 1;
for i = find(all(isnan([b(1:4).s2]), 1));
b(i) = [];
end

仅适用于第一个NaN。然后它会丢失 i 计数并删除不正确的条目。

如果有人知道该怎么做,请帮助我。

最佳答案

你真的很接近解决这个问题,但 for 循环有点问题,所以你应该使用这样的数组公式:

b = a(~isnan([a.s2]));

希望这对您有帮助。

关于arrays - 如何从 Matlab 中的结构数组中删除包含 NaN 的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34104687/

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