24小时热门版块排行榜    

查看: 1069  |  回复: 3

hdchina2010

木虫之王 (文学泰斗)

[求助] Matlab代码优化

trainindices、train、gth的size数相同,都是二维矩阵
以下代码已经能正确运行 请高手帮忙能不能优化一下

train = gth;
for i = 1: size(train,1)
    for j = 1 : size(train,2)
        if trainindices(i,j)==0
            train(i,j) = 0;
        end        
    end
end

说明:将trainindices中非零的元素位置对应的train中的元素置换为gth中对应的元素
回复此楼

» 猜你喜欢

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

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

baobiao007

木虫 (职业作家)

中国特色

【答案】应助回帖

★ ★ ★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+2, 谢谢应助 2013-01-11 22:52:45
hdchina2010: 金币+2, ★★★★★最佳答案, 谢谢~ 2013-03-20 22:43:37
下面这段例子就可以满足你的要求,自己改吧:

a=[1 2 3; 4 5 6];
b=[1 0 0; 2 2 0];
c=rand(2,3);
disp(a);disp(b);disp(c);
c(find(b==0))=0;
disp(c);
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
2楼2013-01-11 17:42:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

449196341

金虫 (初入文坛)

确实比较精简,matlab单个元素循环比较慢
3楼2013-01-17 11:09:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chenshzh

木虫 (小有名气)

【答案】应助回帖

★ ★
hdchina2010: 金币+2, ★★★★★最佳答案, 谢谢~ 2013-03-20 22:43:23
train = gth;
for j = 1: size(train,2)
    for i = 1 : size(train,1)
        if trainindices(i,j)==0
            train(i,j) = 0;
        end        
    end
end
先循环j,再循环i,对于大型矩阵,速度会快很多!
或者采用逻辑矢量的方法:
train = gth;
train(trainindices==0)=0
4楼2013-01-17 11:38:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 muchong888 的主题更新
信息提示
请填处理意见