Re: [問題] 矩陣元素的重新分配疑問 ?

作者: celestialgod (天)   2016-06-17 16:00:32
※ 引述《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的第一行的情況
作者: MrsJ (MrsJ)   2016-06-17 16:12:00
謝謝 我試試..
作者: name0625 (lawpy)   2016-06-17 16:20:00
太強啦!

Links booklink

Contact Us: admin [ a t ] ucptt.com