从数据库构建新矩阵时如何避免Matlab中的for循环

我有一个两列约500行的矩阵。第一列的值从1到48不等。这意味着第一列中有重复的数字。我需要构建一个包含48行的新矩阵,每行包括第1列中特定数字的信息。例如,考虑以下数据:

x = [ 3 500
5 400
3 200
1 100
1 1100 
2 450 
3 890
1 110
2 800
....]

因此,输出矩阵应为:

Output = [100 1100 110 ...0 0 0; 450 800 ... 0 0 0; 8200 890 0 0 0 ...; 0 0 0];

我知道如何使用for循环来做,但是我需要不使用for循环来做。

我用了以下几行

XX = X(:,2);

Output = XX(X(:,1)==(1:48)');

但这没有用,因为新矩阵中的行数不相同。

任何帮助表示赞赏。

马特

您可以使用sub2ind函数执行此操作,建议阅读文档以了解其工作原理。我们将所有x(:,2)值放入矩阵M。每个值所属的行取决于x(:,1)值,因此我们必须确定该值所属的列。

在j以下计算得出j(k)等于向量x(1:k,1)中出现x(k,1)的次数。这将是我们要将值x(k,2)放入的列。

x = [ 3 500
5 400
3 200
1 100
1 1100 
2 450 
3 890
1 110
2 800];

j = sum(triu(x(:,1)==x(:,1)'));     % Calculate the column each value should be placed into
M = zeros(max(x(:,1)), max(j));   % Set up the empty matrix
ind = sub2ind(size(M), x(:,1), j(:)); % Get linear indices from subscripts
M(ind) = x(:,2)

M =

     100        1100         110
     450         800           0
     500         200         890
       0           0           0
     400           0           0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在构建 Java GraphQL API 时,如何避免从数据库中过度获取(即仅获取查询中指定的字段)?

Visual Studio中的SQL Server数据库项目-如何构建新数据库

如何编写sqlite查询以避免一对多数据库模型在python中循环?

向数据库中插入数据时如何避免重复

当不同的函数需要数据库调用中的数据时,如何避免全局变量。(JS)

使用asp.net在数据库中插入数据时如何避免重复值?

索引超过Matlab数据库中的矩阵尺寸错误

在 Azure Pipeline 中构建数据库项目时如何替换 SQL 脚本中的数据库引用

在kotlin中首次构建Room数据库时如何修复异常

在构建时在 Docker 容器中创建 MySQL 数据库

如何避免在数据库中创建“假” ID?

如何构造数据库以避免表中重复

如何避免从数据库中检索重复的值?

构建导航时如何避免嵌套循环?

在node.js中循环SQL数据库时如何正确创建嵌套的json数组?

从数据库读取时如何提高通用循环的速度

我应该如何构建我的数据库以避免这个问题?

如何构建/处理数据库中的付费功能

在Django中运行python manage.py test时如何强制使用新数据库?

新对等连接时如何同步 GUN 数据库

查找索引时避免在Matlab中循环

避免将数据插入到mysql数据库的新行中

如何自动显示数据库中的新数据

使用Junit5在Spring Boot应用程序中测试服务层时如何避免数据库连接

如何避免数据库死锁

使用PHP和MySQL从数据库中获取数据时,无法避免重复数据

避免数据库表中的冗余

我可以避免数据库设计中的关系循环吗?

在Matlab中重塑矩阵时的新坐标