gpt4 book ai didi

MATLAB:创建没有 "side NaN"列的较小矩阵

转载 作者:行者123 更新时间:2023-12-03 01:18:05 26 4
gpt4 key购买 nike

我正在使用一个 30*26000 大小的矩阵,该矩阵的开头和结尾都有 NaN。 NaN 也散布在每一行中。我可以用线性插值填充 NaN,但这会在每行的开头和结尾留下 NaN。推断以替换末尾的这些 NaN 对于我的数据集来说并不理想。

我只想修剪矩阵。以 3 x 6 矩阵为例:

NaN NaN 1 2  3  NaN
NaN 1 2 3 NaN NaN
1 NaN 2 3 4 5

截掉最左边和最右边的列,使得没有行以 NaN 开始结束。

1 2
2 3
2 3

所以我们剩下一个 3 x 2 矩阵。

如何在 Matlab 中做到这一点? (速度优化;我需要将其应用于一百万个大小的矩阵)

谢谢!

最佳答案

对于您的示例,您可以执行以下操作:

让你的矩阵包含 NaN 和数值。

ind1 = sum(isnan(a),1); % 计算沿列的 NaN 值

s = find(ind1 == 0, 1, '第一个'); % 找到没有任何 NaN 的第一列

e = find(ind1 == 0, 1, '最后'); % 找到没有任何 NaN 的最后一列

所以现在只需保留矩阵的这部分从第 s 列到第 e 列:

b = a(:,s:e);

对于没有列不包含 NaN 的情况,可能需要进行额外检查。

关于MATLAB:创建没有 "side NaN"列的较小矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503819/

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