24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1183  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zmhaha

金虫 (初入文坛)

[求助] 如何删除矩阵中inf所在行所有数据,急!

a=[1 inf inf;
    2 inf inf;
    4 inf inf;
    1 inf inf];
各位大侠,如上一个矩阵 其中包含若干个inf, 如何删除矩阵中inf所在行而生成一个新的,不包含inf的矩阵。需要删除inf所在行所有的数据,不是单单inf自己。 谢谢大家!
另外,删除inf后若果想用零代替原来inf的位置,使矩阵的维度不变,怎么办?谢谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

突然想到对于第一种情况更简单的方案,代码更简单,呵呵!
CODE:
a(find(sum(abs(a\')) == inf), :) = [];

abs(a\')是为了防止-inf和inf相加后抵消。

[ 发自手机版 http://muchong.com/3g ]
很女子很弓虽大
3楼2012-04-10 21:53:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

lurencyj

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
zmhaha: 金币+5, ★★★很有帮助 2012-04-11 20:20:01
删除矩阵中inf所在行而生成一个新的,不包含inf的矩阵。需要删除inf所在行所有的数据,不是单单inf自己:
CODE:
% 查找含有inf的行号
inf_id = [];
for ni = 1:size(a,1)
    if length(find(a(ni,:) == inf)) ~= 0
        inf_id = [inf_id ni];
    end
end
% 删除
a(inf_id,:) = [];

删除inf后若果想用零代替原来inf的位置,使矩阵的维度不变:
CODE:
a(find(a(:,:) == inf)) = 0

[ 发自手机版 http://muchong.com/3g ]
很女子很弓虽大
2楼2012-04-10 21:38:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

a后面的那个反斜杠要去掉,是小木虫暗地里加的。。。。。。。

[ 发自手机版 http://muchong.com/3g ]
很女子很弓虽大
4楼2012-04-10 21:55:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

用内置函数isinf
CODE:
>> a = [1 inf inf;
     2 inf 20;
     3 20 30;
     4 10 15];
>> a(~any(isinf(a),2),:)  %判断行有inf的,删除整行,保留其余
ans =
     3    20    30
     4    10    15
>> a(isinf(a)) = 0  %将所有inf替换为0
a =
     1     0     0
     2     0    20
     3    20    30
     4    10    15
>>

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
5楼2012-04-11 01:18:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见