我有一个矢量,A。
A=[3,4,5,2,2,4;2,3,4,5,3,4;2,4,3,2,3,1;1,2,3,2,3,4]
A中的某些记录必须替换为NaN值,因为它们不准确。 我创建了vector rowid,它记录了必须保留的最后一个值,之后必须将现有值交换为NaN。
rowid=[4,5,4,3]
所以我想要创建的矢量B看起来如下:
B=[3,4,5,2,NaN,NaN;2,3,4,5,3,NaN;2,4,3,2,NaN,NaN;1,2,3,NaN,NaN,NaN]
我对如何做到这一点感到茫然。我试过用
A(:,rowid:end)
开始从向量A中选择数据。我希望能够使用sub2ind或某种idx来执行此操作,可能是if循环,但我不知道从哪里开始并且找不到合适的基于我的想法的类似问题!
我非常感谢任何提示/指示,非常感谢
答案 0 :(得分:2)
如果您还不是matlab的专家,我现在会坚持使用简单的for循环:
B = A;
for i=1:length(rowid)
B(i, rowid(i)+1:end) = NaN;
end
将此作为一个单行写一直是一项运动(参见Mohsen的答案),但在许多情况下,明确的for循环更清晰。
答案 1 :(得分:2)
紧凑的是:
B = A;
B(bsxfun(@lt, rowid.', 1:size(A,2)))=NaN;