作者ken780713 (**承晏**)
看板MATLAB
标题[问题] 如何改善来加快运算速度
时间Sun Apr 14 20:45:11 2013
我手边有两笔资料,我必须按照资料二所要求的编号,取出相对应资料一编号的值,
也就是如下所示的a、c、d...
data_r3: data_d1:
编号 数值 编号
1 a 1
2 b 3
3 c 4
4 d 7
5 e 10
6 f .
7 g .
8 h .
.
.
.
目前我使用的方法是用两个for loop去跑,如下所示:
u_picked = zeros(0);
for i=1:row_total
for k=1:row_r3
if data_r3(k,1)==data_d1(i,1)
add = data_r3(k,2);
u_picked = [u_picked;add];
end
end
end
但是资料满庞大的,需要满长的计算时间,因此想请问有没有方法可以改善??
另外一个小问题,我有两个矩阵,A:n*m、B:n*1,如何将A的每一列都加上B的值??
由於触碰matlab不久,还不是很熟悉,还要麻烦高手指点!!感恩!!o(_"_)o
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.218.170
※ 编辑: ken780713 来自: 140.112.218.170 (04/14 20:46)
1F:→ Oxygenair:无法理解 data_r3(k,10) 是什麽东西 04/14 20:50
噢!抱歉 因为原资料里面我要取的值在第10列,我已经修改了~
感谢!!
※ 编辑: ken780713 来自: 140.112.218.170 (04/14 20:52)
2F:→ nilson847552:data_r3里面的编号都跟index一样? 04/14 21:15
类似 由於实际资料第一行另有意义,所以r3里的编码(第一列)跟index就差1这样!
※ 编辑: ken780713 来自: 1.171.59.136 (04/14 21:21)
3F:→ nilson847552:或许可以这样尝试.. 04/14 21:24
4F:→ nilson847552:for i=1:row_total 04/14 21:24
5F:推 peter0318:试试find指令? 04/14 21:24
6F:→ nilson847552: add = data_r3( 1+data_d1(i,1) , 2); 04/14 21:26
7F:→ nilson847552:u_picked=[u_picked;add]; 04/14 21:26
8F:→ nilson847552:end 04/14 21:26
感谢nilson这样似乎是可以拆解一个for loop
peter Find指令我研究看看,谢谢提醒Orz!!
※ 编辑: ken780713 来自: 140.112.218.170 (04/14 21:38)
9F:推 sunev:intersect ? 04/14 23:23
10F:推 s123123sam:如果确定data_d1的编号 在data_r3。都有可用dsearchn 04/14 23:59
11F:→ s123123sam:a_indx=dsearchn(data_r3(:,1),data_d1); 04/15 00:01
12F:推 s123123sam:u_picked =(a_indx:1); 04/15 00:04
13F:→ s123123sam:更正:u_picked =data_r3(a_index:1); 04/15 00:05
14F:推 Gwaewluin:[A,B] 04/15 01:22
15F:推 s123123sam:再更正 u_picked =(a_indx,2); 04/15 18:39