首页 > 解决方案 > 生成一个只知道 1 的位置的二进制矩阵 H

问题描述

我想构造一个非常大的二进制矩阵H,只知道矩阵中'1'的位置。

例如,如果我知道以下坐标:、、、、。(1,1) = 1生成的矩阵给出:(3,1) = 1(2,2) = 1(1,3) = 1H = [1 0 1 ; 0 1 0 ; 1 0 0]

我尝试手动完成,但使用非常大的矩阵(例如512*1024)变得非常复杂。

谢谢你。

标签: matlabmatrix

解决方案


使用稀疏矩阵:

% The coordinates
x = [1 3 2 1]
y = [1 1 2 3]

% Create a sparse matrix, then convert the sparse matrix to a full storage matrix
H = full(sparse(x,y,1))

甚至更短(但使用相同的逻辑):

H = sparse(x,y,1)+0
% It works because matlab use an implicit class conversion

推荐阅读