问题描述:
Matlab 矩阵 提取部分非零元素组成新矩阵
现在假设有矩阵A[12300;12000;50000;00020;00006],需要将其中不是零元素的提取出来,组成新的方阵,提取后的效果是[123;120;500]和[20;06].由于矩阵A是未知的,不能用人为观测的那种提取第一行到第三行,第一列到第三列的方法.求一个通用的方法判断并提取A中非零子矩阵.
我前面说得不好,也忘打空格了.
原来的A矩阵[1 2 3 0 0;1 2 0 0 0;5 0 0 0 0;0 0 0 2 1;0 0 0 0 6]
提取后要求效果是矩阵B[1 2 3;1 2 0;5 0 0]和C[2 1;0 6]
最好能返回矩阵B和矩阵C在原矩阵上相应坐标之类的.
如果原来的A矩阵[1 2 3 0 1;1 2 0 0 0;5 0 0 0 0;0 0 0 0 0;0 0 0 0 0]
提取后要求效果是矩阵B[1 2 3;1 2 0;5 0 0]和C[1] .
矩阵A是未知的,随机的,我上面只是举个例子,希望能得到个通用的方法.
总体上来说,我的希望是是在某个a*b的随机矩阵中,找出相邻的非零的元素,然后将他们提取出来重新组成新的矩阵,新的矩阵不要求是方阵,可以是n*m的(m不等于n),其中空的元素可以用0元素代替,和聚类有点儿相似.不知道这样说能不能说清楚,我表达能力很弱.
现在假设有矩阵A[12300;12000;50000;00020;00006],需要将其中不是零元素的提取出来,组成新的方阵,提取后的效果是[123;120;500]和[20;06].由于矩阵A是未知的,不能用人为观测的那种提取第一行到第三行,第一列到第三列的方法.求一个通用的方法判断并提取A中非零子矩阵.
我前面说得不好,也忘打空格了.
原来的A矩阵[1 2 3 0 0;1 2 0 0 0;5 0 0 0 0;0 0 0 2 1;0 0 0 0 6]
提取后要求效果是矩阵B[1 2 3;1 2 0;5 0 0]和C[2 1;0 6]
最好能返回矩阵B和矩阵C在原矩阵上相应坐标之类的.
如果原来的A矩阵[1 2 3 0 1;1 2 0 0 0;5 0 0 0 0;0 0 0 0 0;0 0 0 0 0]
提取后要求效果是矩阵B[1 2 3;1 2 0;5 0 0]和C[1] .
矩阵A是未知的,随机的,我上面只是举个例子,希望能得到个通用的方法.
总体上来说,我的希望是是在某个a*b的随机矩阵中,找出相邻的非零的元素,然后将他们提取出来重新组成新的矩阵,新的矩阵不要求是方阵,可以是n*m的(m不等于n),其中空的元素可以用0元素代替,和聚类有点儿相似.不知道这样说能不能说清楚,我表达能力很弱.
问题解答:
我来补答展开全文阅读