作者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