找回密码
 立即注册
查看: 4687|回复: 0

R如何实现向量扩充为矩阵

[复制链接]
发表于 2016-6-13 10:22:16 | 显示全部楼层 |阅读模式
如何将列向量A=[0 0 1 1 1]'扩充为其中向量A只可能是A=[0 0 1 1 1]'的形式即前边是0,后边是1不会出现其他的非零元素并且当第一个非零元素1出现后,后边的元素都是1是连续的中间不会有零元素,即不会出现A=[0 0 1 0 1]'或者A=[0 0 1 2 1]'、A=[0 0 1 0 2]'等情况
0 0 0 0 0
0 0 0 0 0
10 0 0 0
0 1 0 00
0 0 1 0 0
列向量每个元素对应新矩阵的相应行,第一个元素对应第一行第二个对应第二行...,如果对应元素为0则新矩阵对应行的元素均为0,从第一个非0元素1开始,第一个非0元素放在矩阵对应行的第一列其余元素为0,第二个非零元素1放在对应行第二列其余元素为1....,最终生成的新矩阵为nxn方阵n为列向量元素个数。
如果现在有n个形式如A的向量,把他们堆叠为一个新的列向量B如B的形式可以如下
B=[0 0 1 1 1 0 0 0 1 1 0 1 1 1 1]'即每五个元素就是前边所述的A向量的一种实现形式,那么如何从向量B的第一行元素开始,每次自动截取连续5个元素进行如下操作:
列向量每个元素对应新矩阵的相应行,第一个元素对应第一行第二个对应第二行...,如果对应元素为0则新矩阵对应行的元素均为0,从第一个非0元素1开始,第一个非0元素放在矩阵对应行的第一列其余元素为0,第二个非零元素1放在对应行第二列其余元素为1....,最终生成的新矩阵为nxn方阵n为列向量元素个数。
并把最终生成的多个方阵对应竖向堆叠排列。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-23 06:41 , Processed in 0.046703 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表