matlab - 生成一个只知道 1 的位置的二进制矩阵 H
问题描述
我想构造一个非常大的二进制矩阵H,只知道矩阵中'1'的位置。
例如,如果我知道以下坐标:、、、、。(1,1) = 1
生成的矩阵给出:(3,1) = 1
(2,2) = 1
(1,3) = 1
H = [1 0 1 ; 0 1 0 ; 1 0 0]
我尝试手动完成,但使用非常大的矩阵(例如512*1024
)变得非常复杂。
谢谢你。
解决方案
使用稀疏矩阵:
% 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
推荐阅读
- firebase - 无法从 3.19.1 更新 firebase 工具
- c# - c# asp.net网站调用一个webApi
- html - 总表/容器中的第 n 个孩子
- python-3.x - 通过 GeckoDriver Firefox 和 Selenium 执行测试时出现“线程在处理恐慌时出现恐慌。中止”错误
- powerbi - 如何使用 Power BI 在所有列中查找和替换
- java - 如何检查数字是否存在 JSON 字符串?
- vuejs2 - 将元素ui导入nuxt时出现样式错误
- javascript - 反应——在反应中添加输入切换
- electron - setSimpleFullScreen 导致应用程序失去对电子的关注?
- python - 每个循环随机化用户输入