如何通过索引对矩阵进行子集化

时间:2015-04-20 14:35:43

标签: matlab

A = [1 2 3; 4 5 6]
r_idx = [1 2]
c_idx = [1 2]
A(r_idx,c_idx) = [1 nan nan; nan 5 nan]

换句话说,它应该返回A的(1,1)和(2,2)元素,并将所有其他条目设置为nan。

这可能吗?

2 个答案:

答案 0 :(得分:4)

A = [1 2 3; 4 5 6];
r_idx = [1 2];
c_idx = [1 2];
B = nan(size(A));
B(sub2ind(size(A),r_idx,c_idx)) = A(sub2ind(size(A),r_idx,c_idx));

然后,期望的结果在B

答案 1 :(得分:2)

使用sparse -

的一种方法
A(full(sparse(r_idx,c_idx,1,size(A,1),size(A,2)))==0) = nan

setdiff -

A(setdiff(1:numel(A),sub2ind(size(A),r_idx,c_idx))) = nan