楼主: 萧瑟如风
1147 8

[其他] 求大家给个matlab代码! [推广有奖]

  • 0关注
  • 0粉丝

已卖:5份资源

高中生

72%

还不是VIP/贵宾

-

威望
0
论坛币
69 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
430 点
帖子
34
精华
0
在线时间
28 小时
注册时间
2009-11-30
最后登录
2016-11-23

楼主
萧瑟如风 发表于 2013-5-28 00:12:41 |AI写论文
10论坛币
我想对以下数据进行处理,就是对每一行的数字求对数,再求和,但是有NaN,求高手给个代码能不能跳过NaN,不要对NaN赋值.谢谢了!
附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

最佳答案

zhouguohaishi 查看完整内容

你的意思是现剔除掉数据中的NaN,然后对数,再各行求和吧! 假设你的数据定义为矩阵b [a1,a2]=size(b); a=zeros(a1,1); for i=1:a1 for j=1:a2 if ~isnan(b(i,j))&(b(i,j)>0) a(i,1)=a(i,1)+log(b(i,j)); end end end 矩阵a为所求
关键词:matlab代码 MATLAB atlab matla Mat matlab

沙发
zhouguohaishi 发表于 2013-5-28 00:12:42
你的意思是现剔除掉数据中的NaN,然后对数,再各行求和吧!

假设你的数据定义为矩阵b
[a1,a2]=size(b);
a=zeros(a1,1);
for i=1:a1
     for j=1:a2
       if ~isnan(b(i,j))&(b(i,j)>0)
        a(i,1)=a(i,1)+log(b(i,j));
end
end
end
矩阵a为所求

藤椅
花非花zc 学生认证  发表于 2013-5-28 00:24:31
啊?

板凳
pporrr 发表于 2013-5-28 00:55:07
nan应该是从去log时来的。加个if语句吧
sum = 0;
for i=1:m % 你的求和
   if (your_number <= 0) then
         break;
   end
   sum = sum + log(your_number)
end

报纸
zhouguohaishi 发表于 2013-5-28 14:07:43

地板
萧瑟如风 发表于 2013-5-28 22:30:41
zhouguohaishi 发表于 2013-5-28 11:01
你的意思是现剔除掉数据中的NaN,然后对数,再各行求和吧!

假设你的数据定义为矩阵b
就是这个意思,虽然代码有些没看懂,不过还是谢谢了!

7
amitacn 发表于 2013-5-28 23:16:46
这个简单。
令所有的NaN=1,然后正常按你的思路做就OK了,
我的思路是log(1)=0,所以不影响你的结果。
我喜欢真诚的朋友。

8
萧瑟如风 发表于 2013-5-29 22:18:53
amitacn 发表于 2013-5-28 23:16
这个简单。
令所有的NaN=1,然后正常按你的思路做就OK了,
我的思路是log(1)=0,所以不影响你的结果。
谢谢了!

9
萧瑟如风 发表于 2013-5-29 22:19:17
amitacn 发表于 2013-5-28 23:16
这个简单。
令所有的NaN=1,然后正常按你的思路做就OK了,
我的思路是log(1)=0,所以不影响你的结果。
谢谢了!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-9 09:17