1. 程式人生 > >【Matlab提取離散元素】矩陣取出多個離散元素

【Matlab提取離散元素】矩陣取出多個離散元素

由於Matlab是按照列優先儲存資料,矩陣實際也是一維陣列:
對於零矩陣C[5*11]是5行11列. 使[1;2;3;4;5]行的 [3;4;6;8;9]列,五個元素為1如下程式碼:
基本思想:每列5個元素對應的列select_minQ-1乘以5,計算每列最後一個元素的座標位置;
#由於matlab沒有index=0;
select_minQ-1表示最後一個元素位置,加上[1;2;3;4;5],表示下一行的位置。

select_minQ = [3;4;6;8;9];
select_C = zeros(5,11);
select_index = ([1;2;3;4;5]) + (select_minQ-1)*5;
select_C(select_index) = 1;

select_C = zeros(5,11):
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

select_C(select_index) = 1 :
0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 1 0 0