【问题标题】:Matlab: Replace NaN element values by value of the precious rowMatlab:用珍贵行的值替换NaN元素值
【发布时间】:2017-03-31 18:55:02
【问题描述】:

我正在尝试用前一行中元素的值替换矩阵的所有 NaN 值。我怎样才能做到这一点?这是我尝试过的(仅限第一列),但不知何故它不起作用......

for i=1:1935 %number of rows
if RSPB0916v05NEW5(i,1)==NaN  
    RSPB0916v05NEW5(i,1) = RSPB0916v05NEW5((i-1),1) 
end
end

非常感谢您的帮助,非常感谢!

最好的,

迈克尔

【问题讨论】:

  • 单元格用大括号 {} 进行索引。另外,想想当i=1
  • 谢谢,安德。但我正在使用矩阵。如果我使用大括号,它会说:来自非单元格数组对象的单元格内容引用。感谢关于 i=1 的提示
  • 您的问题中“单元”一词出现了 3 次,“矩阵”出现了 0 次。请花点时间正确写下您的问题
  • 实际上,矩阵是我的问题,但很抱歉没有正确描述问题。基础数据是 1935x582 矩阵,但我想用之前单元格的值替换该矩阵中显示 NaN 的所有单元格。你会怎么做?非常感谢
  • 什么是矩阵的单元格?元素?当i=1 具有 NaN 值时会发生什么?

标签: matlab matrix replace


【解决方案1】:

假设您在第一行没有NaN,并记住NaN is never equal to NaN

for ii=2:size(RSPB0916v05NEW5,1)%number of rows
    idx=find(isnan(RSPB0916v05NEW5(ii,:))); % find the index of NaNs
    RSPB0916v05NEW5(ii,indx)=RSPB0916v05NEW5(ii-1,indx); % replace them from the previous row
end

注意,如果第一行有NaN值,需要单独处理。

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 2013-09-25
    • 2016-06-25
    • 1970-01-01
    • 2019-09-29
    • 2018-04-30
    • 2015-01-18
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多