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,怎么寻找vector中等于a的元素,并将其替换成另两个元素?