看板 MATLAB 關於我們 聯絡資訊
※ 引述《MrsJ (MrsJ)》之銘言: : 各位先進好 自修matlab中 目前遇到一個小瓶頸 : 沒法用(我已知的)語法建構我所需(較龐大的)的矩陣 : 問題簡化描述如下: : 令 7x2 矩陣 MatA= : [ 2.0000 3.4641 : 4.0000 3.7417 : 5.0000 3.8730 : 6.0000 4.0000 : 8.0000 4.2426 : 10.0000 4.4721 : 13.0000 5.0898 ] : 這裡想構造另一個更大的 15x2 矩陣 MatB, 比如說 : 令 MatB= ( 方便起見 MatB(1,1) = 1.000 ) : [ 1.0000 0 : 2.0000 3.4641 : 3.0000 0 : 4.0000 3.7417 : 5.0000 3.8730 : 6.0000 4.0000 : 7.0000 0 : 8.0000 4.2426 : 9.0000 0 : 10.0000 4.4721 : 11.0000 0 : 12.0000 0 : 13.0000 5.0898 : 14.0000 0 : 15.0000 0 ] : 亦即規則是, 若 MatB(:,1)的某元素 MatB(N,1) 在MatA(:,1)中是不存在的 : 那麼就令 MatB(N,2)=0 : 因為實際需要處理的矩陣dimension更大 不可能蠢到手動插值 : 目前也找不到合適的 fuction 可以直接把MatA的元素分解排進 MatB 中 : 想嘗試使用再加一個迴圈來執行這個要求 ... 我不幸卡住。 A = [randi(25, 10, 1), randn(10, 1)]; B = [(1:20)', zeros(20, 1)]; [existence, idx] = ismember(A(:, 1), B(:, 1)); B(idx(existence), 2) = A(existence, 2); disp(B) 1.0000 0 2.0000 -0.1303 3.0000 -1.4491 4.0000 0 5.0000 0.1837 6.0000 0 7.0000 0 8.0000 -0.1765 9.0000 -1.3320 10.0000 0 11.0000 0 12.0000 0.4517 13.0000 0 14.0000 0 15.0000 0 16.0000 0 17.0000 0 18.0000 0 19.0000 0.3335 20.0000 0.3914 第一個column不是整數應該也沒問題 只是可能數值問題(rounding error),7電腦會把他視作不同 existence是確保B的第一行未包含A的第一行的情況 -- R資料整理套件系列文: magrittr #1LhSWhpH (R_Language) http://tinyurl.com/j3ql84c data.table #1LhW7Tvj (R_Language) http://tinyurl.com/hr77hrn dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/jtg4hau dplyr(下) #1Lhw8b-s (R_Language) tidyr #1Liqls1R (R_Language) http://tinyurl.com/jq3o2g3 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.74.87 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1466150443.A.53E.html ※ 編輯: celestialgod (140.109.74.87), 06/17/2016 16:02:29
MrsJ: 謝謝 我試試.. 06/17 16:12
name0625: 太強啦! 06/17 16:20