0

所以如果它只是一个一维向量,我可以简单地做这样的事情:

y1 = y(~isnan(y));

但是...如果 y 是一个 mxn 矩阵并且我想要来自 y(:,5) 的所有非 NaN 数据怎么办?然后我能做些什么,尽可能少地采取额外的步骤?

我可以分配 y1 = y(:,5),然后调用 y1 = y(~isnan(y))。但如果可能的话,我宁愿避免分配太多的新变量。

4

3 回答 3

1

但是...如果 y 是一个 mxn 矩阵并且我想要来自 y(:,5) 的所有非 NaN 数据怎么办?然后我能做些什么,尽可能少地采取额外的步骤?

您可以使用sub2ind,但是在没有任何中间变量的情况下这样做仍然会非常难看。我的建议是写一个函数来做你想做的事。

于 2013-02-25T21:07:11.513 回答
1

如果您想要 y 的非 Nan 元素的坐标,可以使用以下命令:

[row col]=ind2sub(size(y),find(~isnan(y)));
于 2013-02-25T21:07:20.303 回答
1

在没有新变量的情况下,您只需使用来自第五列的非 nan 值过滤来自第 5 列的数据。重复,我知道。

y(~isnan(y(:,5)),5)

至于不改变形状。我相信如果初始化为 nx1 矩阵并分配索引,它应该保持形状。

y_nonnan(:,1) = y(~isnan(y(:,5)),5)

我只是不记得任何优雅的方法来制作一个 nx1 矩阵。

于 2013-02-25T23:06:55.637 回答