由于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