matlab怎么把元素替换成NAN

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎么把元素替换成NAN相关的知识,希望对你有一定的参考价值。

如题,只找到怎么把NAN替换成元素.反过来呢

我举个例子
A = [1 2 3 2 3 4 5];
想让A中的=2的元素变成NAN
ind = find(A == 2); % 找到索引
A(ind) = nan; %变成NAN
也可以直接写A(A==2) = nan;
此外,如果想找A中的NAN就是 isnan(A);
分别试试吧 :)
参考技术A 比如说是2阶方阵,现在对其中的元素进行一些运算并把结果重新赋值到另一个矩阵中,
proc iml;
beta=2 3,3 4;
q12=beta[1,1]/2;
q22=beta[2,2]**2/3;
q=1 q12,q12 q22;
print beta q12 q22 q;

方法:
proc iml;
beta=2 3,3 4;
q=j(2,2,.);
q[1,2]=beta[1,1]/2;
q[2,2]=beta[2,2]**2/3;
q[1,1]=1;
q[2,1]=beta[1,1]/2;
print beta q;
参考技术B 直接让 这个元素=nan

用相同的值替换特定行中的所有 NaN - Matlab

【中文标题】用相同的值替换特定行中的所有 NaN - Matlab【英文标题】:Replace all NaN in specific row with same value - Matlab 【发布时间】:2015-01-18 16:41:08 【问题描述】:

我有一个如下所示的数组 (data2winner):

第 1 至 6 列

1.0894    1.1923    1.0238    1.0625    1.0222    0.9701
1.0000    1.2419    1.2093    0.9412    0.9783    1.0923
1.0379       NaN    1.0000    1.0417    1.0667    1.0000

第 7 到 12 列

0.9661    0.9568    1.0400    0.8519    0.8675    0.9821
0.7895    1.0000       NaN    1.0000    1.1250    0.8182
1.0667    0.7714       NaN    1.0000    0.9383    1.1111

我想用相同的值(例如 0.5)替换同一行(例如第 3 行)中的所有 NaN,这样输出看起来像这样:

第 1 至 6 列

1.0894    1.1923    1.0238    1.0625    1.0222    0.9701
1.0000    1.2419    1.2093    0.9412    0.9783    1.0923
1.0379       **0.5**    1.0000    1.0417    1.0667    1.0000

第 7 到 12 列

0.9661    0.9568    1.0400    0.8519    0.8675    0.9821
0.7895    1.0000       NaN    1.0000    1.1250    0.8182
1.0667    0.7714       **0.5**    1.0000    0.9383    1.1111

我知道我可以使用以下方法将矩阵中的所有 NaN 替换为 0.5:

data2winner(isnan(data2winner)) = 0.5

所以我想用

data2winner(isnan(data2winner(3,:))) = 0.5

会解决我的问题,但它不起作用。有人知道如何解决我的问题吗?任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

isnan(data2winner(3,:)) 为您提供一个由 1 和 0 组成的逻辑数组,其中 NaNs 分别出现在第三行中或不出现在第三行中。然后,您需要索引输入矩阵的第三行并选择具有NaNs 的列(来自isnan 输出的列)并将它们设置为0.5。您的错误是索引到完整的矩阵而不是仅第三行。

因此,应该这样做 -

row_id = 3;
data2winner(row_id,isnan(data2winner(row_id,:))) = 0.5

【讨论】:

非常感谢!完美运行

以上是关于matlab怎么把元素替换成NAN的主要内容,如果未能解决你的问题,请参考以下文章

matlab中的元胞数组如何实现批量的赋值呢?

Matlab,怎么寻找vector中等于a的元素,并将其替换成另两个元素?

excel数据导入matlab处理,全部显示NAN..怎么解决?

matlab 如何找矩阵中的非零元素并替换

Matlab怎么把元胞数组转化成矩阵

将list集合中部分元素替换成指定元素该怎么做