24小时热门版块排行榜    

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

爱红茶的猫

木虫 (小有名气)

[求助] MATLAB编程优化问题 已有2人参与

求助一个matlab编程的优化问题,类似霍夫变换(Hough Transform)的累加问题。
一维向量a里面为矩阵A的行下标信息,一维向量b里面是A的列下标信息。
使用for循环的赋值程序如下:

for i = 1 :m
     for j = 1 : n
          count = A(a(i), b(j)) + 1;
          A(a(i), b(j)) = count;
      end
end

问题是matlab的for循环效率低下,如果m和n的值非常大的话(>10000),计算时间很长。
在此求助matlab高手,能否使用矩阵实现的方法代替for循环来提高编程效率?
期待确实有帮助的应助回帖
回复此楼

» 猜你喜欢

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

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

爱红茶的猫

木虫 (小有名气)

引用回帖:
5楼: Originally posted by yisc1981 at 2014-11-28 00:13:53
理解编程思想就不难理解那几句话了,至于那些函数是什么意思可以查询相关的说明,这里将编程思想说说吧。
      因为a,b中存储的是A矩阵的行标和列标,如果那个下标出现的次数多,则A中对应元素被加的量就大。所以 ...

非常感谢您的回复,非常清楚,学习了!
6楼2014-11-28 11:10:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

feixiaolin

荣誉版主 (文坛精英)

优秀版主

【答案】应助回帖


感谢参与,应助指数 +1
爱红茶的猫: 金币+1, 有帮助, 可是这段程序还是基于双重for循环的,实际效率并没有提高多少,不知道哪位可以给出类似于将a, b构造成2维矩阵,然后整体进行运算累加的结果。 2014-11-24 14:59:52
for i = 1 :m
     m1=a(i);   
     for j = 1 : n
          m2= b(j);
          A(m1, m2) += 1;
      end
end
2楼2014-11-24 14:45:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yisc1981

铜虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
爱红茶的猫: 金币+5, ★★★很有帮助, 经过验证,A矩阵如果为零矩阵的话没有误差,但是方法2中最后5行的意思不太明白,如果能解释一下的话一定采纳为最佳答案。 2014-11-27 11:01:52
clear all
clc

A=rand(10);
B=A; %留着比较
a=[2 2 6 8 5 5 5 5];
m=length(a)
b=[1 1 1 3 3 9 9 9 4 4];
n=length(b);
for i =1:m
     for j = 1 : n
          count = A(a(i), b(j)) + 1;
          A(a(i), b(j)) = count;
      end
end
% 第二种方法
a=sort(a)
b=sort(b)
[a,ida]=unique(a)
[b,idb]=unique(b)
ida=[0,ida]
idb=[0,idb]
counta=diff(ida)
countb=diff(idb)
B(a,b)=B(a,b)+counta'*countb

%检查两端程序是否相等
D=A-B
%经过试验,D的元素有时候有数值误差,但是都在1.0e-14量级,稍微处理就行
3楼2014-11-26 09:50:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

爱红茶的猫

木虫 (小有名气)

引用回帖:
3楼: Originally posted by yisc1981 at 2014-11-26 09:50:41
clear all
clc

A=rand(10);
B=A; %留着比较
a=;
m=length(a)
b=;
n=length(b);
for i =1:m
     for j = 1 : n
          count = A(a(i), b(j)) + 1;
          A(a(i), b(j)) = count;
      end
...

十分感谢回复,能不能请您给解释一下方法二里
counta=diff(ida)
countb=diff(idb)
B(a,b)=B(a,b)+counta'*countb
这几行的含义?
我验证了一下,如果A是零矩阵的话2中方法是没有误差的。
谢谢!
4楼2014-11-26 13:57:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 急需调剂 +9 绝不放弃22 2026-04-15 10/500 2026-04-18 08:09 by chixmc
[考研] 294求调剂 +7 淡然654321 2026-04-17 8/400 2026-04-17 16:36 by wutongshun
[教师之家] 山东双非院校考核超级无底线,领导幸灾乐祸,教师遭殃恐 +4 qut2026 2026-04-11 8/400 2026-04-17 16:10 by 会飞的猪157
[考研] 收到复试调剂但是去不了 +6 小蜗牛* 2026-04-16 6/300 2026-04-17 10:05 by 涵竹刘
[考研] 291求调剂 +9 关忆北. 2026-04-14 9/450 2026-04-16 22:49 by cfdbai
[考研] 22408 312求调剂 +23 门路摸摸 2026-04-14 25/1250 2026-04-16 21:21 by Art1977
[考研] 297,工科调剂?河南农业大学本科 +14 河南农业大学-能 2026-04-14 14/700 2026-04-16 14:41 by dingyanbo1
[考研] 26药学专硕105500求调剂 +6 喽哈加油 2026-04-13 7/350 2026-04-16 14:31 by zhouxiaoyu
[考博] 申博自荐 +3 Linxia林夏 2026-04-13 3/150 2026-04-16 12:55 by 墨荷之露
[基金申请] RY:中国产出的科学垃圾论文,绝对数量和比例都世界第一 +7 zju2000 2026-04-14 18/900 2026-04-16 11:36 by 欢乐颂叶蓁
[考研] 药学求调剂 +14 喽哈加油 2026-04-14 16/800 2026-04-16 10:15 by beilsong20
[考研] 290调剂生物0860 +38 哇哈哈,。 2026-04-11 44/2200 2026-04-16 09:52 by cuisz
[考研] 一志愿A区211,22408 321求调剂 +6 随心所欲☆ 2026-04-15 7/350 2026-04-15 21:45 by lbsjt
[考研] 求助调剂,跨调 +19 X十甫寸Y 2026-04-11 20/1000 2026-04-15 21:18 by cuisz
[考研] 材料工程281还有调剂机会吗 +43 xaw. 2026-04-11 44/2200 2026-04-15 12:46 by 西北望—风沙
[考研] 085600材料与化工329分求调剂 +24 叶zilin 2026-04-13 25/1250 2026-04-14 09:20 by 试管破裂
[考研] 085600材料与化工349分求调剂 +16 李木子啊哈哈 2026-04-12 17/850 2026-04-14 09:11 by fenglj492
[考研] 调剂结束 +6 floriea 2026-04-12 8/400 2026-04-12 18:13 by zhouxiaoyu
[考研] 339求调剂 +8 hanwudada 2026-04-11 9/450 2026-04-12 15:36 by laoshidan
[考研] 求调剂,一志愿材料科学与工程985,365分, +8 材化李可 2026-04-11 10/500 2026-04-12 08:42 by 852137818
信息提示
请填处理意见