看板 MATLAB 關於我們 聯絡資訊
我手邊有兩筆資料,我必須按照資料二所要求的編號,取出相對應資料一編號的值, 也就是如下所示的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)
Oxygenair:無法理解 data_r3(k,10) 是什麼東西 04/14 20:50
噢!抱歉 因為原資料裡面我要取的值在第10列,我已經修改了~ 感謝!! ※ 編輯: ken780713 來自: 140.112.218.170 (04/14 20:52)
nilson847552:data_r3裡面的編號都跟index一樣? 04/14 21:15
類似 由於實際資料第一行另有意義,所以r3裡的編碼(第一列)跟index就差1這樣! ※ 編輯: ken780713 來自: 1.171.59.136 (04/14 21:21)
nilson847552:或許可以這樣嘗試.. 04/14 21:24
nilson847552:for i=1:row_total 04/14 21:24
peter0318:試試find指令? 04/14 21:24
nilson847552:  add = data_r3( 1+data_d1(i,1) , 2); 04/14 21:26
nilson847552:u_picked=[u_picked;add]; 04/14 21:26
nilson847552:end 04/14 21:26
感謝nilson這樣似乎是可以拆解一個for loop peter Find指令我研究看看,謝謝提醒Orz!! ※ 編輯: ken780713 來自: 140.112.218.170 (04/14 21:38)
sunev:intersect ? 04/14 23:23
s123123sam:如果確定data_d1的編號 在data_r3。都有可用dsearchn 04/14 23:59
s123123sam:a_indx=dsearchn(data_r3(:,1),data_d1); 04/15 00:01
s123123sam:u_picked =(a_indx:1); 04/15 00:04
s123123sam:更正:u_picked =data_r3(a_index:1); 04/15 00:05
Gwaewluin:[A,B] 04/15 01:22
s123123sam:再更正 u_picked =(a_indx,2); 04/15 18:39