所以如果它只是一个一维向量,我可以简单地做这样的事情:
y1 = y(~isnan(y));
但是...如果 y 是一个 mxn 矩阵并且我想要来自 y(:,5) 的所有非 NaN 数据怎么办?然后我能做些什么,尽可能少地采取额外的步骤?
我可以分配 y1 = y(:,5),然后调用 y1 = y(~isnan(y))。但如果可能的话,我宁愿避免分配太多的新变量。
所以如果它只是一个一维向量,我可以简单地做这样的事情:
y1 = y(~isnan(y));
但是...如果 y 是一个 mxn 矩阵并且我想要来自 y(:,5) 的所有非 NaN 数据怎么办?然后我能做些什么,尽可能少地采取额外的步骤?
我可以分配 y1 = y(:,5),然后调用 y1 = y(~isnan(y))。但如果可能的话,我宁愿避免分配太多的新变量。
但是...如果 y 是一个 mxn 矩阵并且我想要来自 y(:,5) 的所有非 NaN 数据怎么办?然后我能做些什么,尽可能少地采取额外的步骤?
您可以使用sub2ind
,但是在没有任何中间变量的情况下这样做仍然会非常难看。我的建议是写一个函数来做你想做的事。
如果您想要 y 的非 Nan 元素的坐标,可以使用以下命令:
[row col]=ind2sub(size(y),find(~isnan(y)));
在没有新变量的情况下,您只需使用来自第五列的非 nan 值过滤来自第 5 列的数据。重复,我知道。
y(~isnan(y(:,5)),5)
至于不改变形状。我相信如果初始化为 nx1 矩阵并分配索引,它应该保持形状。
y_nonnan(:,1) = y(~isnan(y(:,5)),5)
我只是不记得任何优雅的方法来制作一个 nx1 矩阵。