Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-04-15, 22:43   #1
nin
初级会员
 
注册日期: 2011-04-13
帖子: 6
声望力: 0
nin 正向着好的方向发展
默认 用均值代替NaN

这个矩阵是老师直接给我的,是1933*457,里边有一些缺失数据用NaN表示了,我现在要进行数据预处理,所以就想把矩阵中的NaN去掉,用上下的有效值的平均数来表示,这样说够明白了吗?矩阵很大,实在不知道怎么写代码,写了很多个都错了,请问,究竟要怎么写才能实现呢?请高手指点,这个对你们来说非常简单的问题我已经想了两天了
nin 当前离线   回复时引用此帖
旧 2011-04-16, 02:16   #2
libralibra
初级会员
 
libralibra 的头像
 
注册日期: 2007-12-07
帖子: 22
声望力: 18
libralibra 正向着好的方向发展
默认 回复: 用均值代替NaN

测试数据
代码:
 a = magic(10);
a
b = randi(100,1,15);
a(b) = NaN;
a
a(isnan(a)) = mean2(a(~isnan(a)));
a
运行结果

代码:
 a =
    92    99     1     8    15    67    74    51    58    40
    98    80     7    14    16    73    55    57    64    41
     4    81    88    20    22    54    56    63    70    47
    85    87    19    21     3    60    62    69    71    28
    86    93    25     2     9    61    68    75    52    34
    17    24    76    83    90    42    49    26    33    65
    23     5    82    89    91    48    30    32    39    66
    79     6    13    95    97    29    31    38    45    72
    10    12    94    96    78    35    37    44    46    53
    11    18   100    77    84    36    43    50    27    59
a =
    92    99     1     8    15    67   NaN    51    58    40
    98    80     7   NaN    16    73    55    57    64   NaN
     4    81   NaN    20    22   NaN    56    63   NaN    47
    85    87    19    21     3    60    62    69    71    28
    86    93    25     2     9    61    68   NaN    52    34
    17   NaN    76    83   NaN    42   NaN    26    33    65
    23   NaN   NaN    89    91    48    30    32    39    66
    79     6    13    95    97    29    31    38    45    72
   NaN    12    94    96    78    35   NaN    44    46    53
    11    18   100    77    84    36    43   NaN    27    59
a =
   92.0000   99.0000    1.0000    8.0000   15.0000   67.0000   50.4353   51.0000   58.0000   40.0000
   98.0000   80.0000    7.0000   50.4353   16.0000   73.0000   55.0000   57.0000   64.0000   50.4353
    4.0000   81.0000   50.4353   20.0000   22.0000   50.4353   56.0000   63.0000   50.4353   47.0000
   85.0000   87.0000   19.0000   21.0000    3.0000   60.0000   62.0000   69.0000   71.0000   28.0000
   86.0000   93.0000   25.0000    2.0000    9.0000   61.0000   68.0000   50.4353   52.0000   34.0000
   17.0000   50.4353   76.0000   83.0000   50.4353   42.0000   50.4353   26.0000   33.0000   65.0000
   23.0000   50.4353   50.4353   89.0000   91.0000   48.0000   30.0000   32.0000   39.0000   66.0000
   79.0000    6.0000   13.0000   95.0000   97.0000   29.0000   31.0000   38.0000   45.0000   72.0000
   50.4353   12.0000   94.0000   96.0000   78.0000   35.0000   50.4353   44.0000   46.0000   53.0000
   11.0000   18.0000  100.0000   77.0000   84.0000   36.0000   43.0000   50.4353   27.0000   59.0000
__________________
接MATLAB图像处理项目,毕设.也可作vb作业.
QQ: 790404545
libralibra 当前离线   回复时引用此帖
旧 2011-04-16, 20:08   #3
nin
初级会员
 
注册日期: 2011-04-13
帖子: 6
声望力: 0
nin 正向着好的方向发展
默认 回复: 用均值代替NaN

大侠,谢谢您的回答,可是我要的不是矩阵中所有数的均值,而是这个NaN值上下值的均值啊,要怎么改?
nin 当前离线   回复时引用此帖
旧 2011-04-17, 00:50   #4
libralibra
初级会员
 
libralibra 的头像
 
注册日期: 2007-12-07
帖子: 22
声望力: 18
libralibra 正向着好的方向发展
默认 回复: 用均值代替NaN

跟位置有关,必须循环了
__________________
接MATLAB图像处理项目,毕设.也可作vb作业.
QQ: 790404545
libralibra 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 01:05


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.