Matlab 矩阵 提取部分非零元素组成新矩阵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在原矩阵上相应坐标

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 06:24:27
Matlab 矩阵 提取部分非零元素组成新矩阵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在原矩阵上相应坐标

Matlab 矩阵 提取部分非零元素组成新矩阵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在原矩阵上相应坐标
Matlab 矩阵 提取部分非零元素组成新矩阵
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元素代替,和聚类有点儿相似.

Matlab 矩阵 提取部分非零元素组成新矩阵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在原矩阵上相应坐标
function M = submatrix(B)
% 提取部分非零元素组成新矩阵

% C用来表示B的那些位置元素已被提取
C = B~=0;
M = [];
while any(C(:))
[M1, C] = local_submatrix(B, C);
M = [M; M1];
end

% 最后应判断后面提取的子矩阵是否包含前面的
% 这是因为,提取子矩阵是由从左上角开始的,仅取左上角的子矩阵已不和其它部分
% 相连,但如果放在一个更大的范围里面,则可能通过其它部分桥接而相连
repeat = [];
for i = 1 : length(M)-1
for j = i+1 : length(M)
if ( M(j).pos(1) 1
if ~isempty( find(B(r, c(1)) .* B(r, c(1)-1)) )
c = c(1)-1 : c(end);
expand = true;
end
end

% 向右
if c(end) < n
if ~isempty( find(B(r, c(end)) .* B(r, c(end)+1)) )
c = c(1) : c(end)+1;
expand = true;
end
end

% 若四个方向均无法扩张,则停止尝试
if ~expand, break, end
end

% 提取子矩阵,并把子矩阵原来的位置清0
M = B(r, c)
C(r, c) = 0;

% 返回结果,其中pos为子矩阵左上角元素在原矩阵中的位置
M = struct('M',M,'pos',[r(1) c(1)]);

Matlab 矩阵 提取部分非零元素组成新矩阵现在假设有矩阵A[12300;12000;50000;00020;00006],需要将其中不是零元素的提取出来,组成新的方阵,提取后的效果是[123;120;500]和[20;06].由于矩阵A是未 Matlab 矩阵 提取部分非零元素组成新矩阵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在原矩阵上相应坐标 matlab中怎样隔列提取矩阵的元素?例如我想提取第1,3,5,7.1+2n列,用这些元素组成新的矩阵. matlab 怎样去掉矩阵中的零元素 matlab怎样提取出矩阵元素的正负号 如何随机提取matlab矩阵中一个元素的位置关于matlab矩阵问题 matlab提取已知矩阵元素组成新矩阵我有一个704*1280的矩阵,想分别从中取出32个32*64的小矩阵并且对这个小矩阵求秩,如何实现, matlab中把矩阵提取对角线元素如何把矩阵主对角线以上的元素依次取出组成一个向量,假设矩阵为A=[1,2 3;4 5 6;7 8 9] matlab中在一个矩阵中取出部分元素,用这些元素组成一个新的向量.假设有一个大矩阵a=1 0 23 3 03 4 9 0 70 24 0 0 0我想把所有非0的元素取出来放到一个向量b中,该怎么操作呢? matlab对矩阵中非零元素的运算要求非零元素的倒数[1 2 3 0;4 5 6 0;7 8 9 0; 4 5 0 6],生成新的矩阵 在MATLAB中如何将一个已知的矩阵输出成那种图片的形式例如一个100*100度为3的矩阵,将其中的非零元素用“点”表示,零元素则不表示出来 matlab写矩阵中提取每一列的最大值组成新的行矩阵 矩阵为非0矩阵什么意思.我知道矩阵为非零矩阵代表每个元素都不是0. matlab如何提取列矩阵(n行)的前n-1个元素(或者后n-1个元素)组成的新的列矩阵麻烦请就列矩阵给个答案.比如a=[7;8;5;2;6;4;3]求它的前六位数组成的列矩阵,和后六位组成的列矩阵分别应该怎么表 请问如何批量提取matlab矩阵中的元素并作为另一个矩阵的坐标?如有一个mX2的矩阵A,每行保存的是矩阵B部分元素的坐标,想将矩阵B中对应的A中元素置为1,除了循环给每个元素置1,请问还有什么 非零矩阵是什么意思? 如何用matlab~~提取第一行和第二行中大于0.3的元素组成矩阵如何用matlab创建一个4*5随机阵,提取第一行和第二行中大于0.3的元素组成矩阵.~~谢谢大家指教~~谢谢hwyegg ~~还能帮忙一题吗~ 设A=[1 4 非零矩阵是行列式不为零,还是有元素不为零的矩阵?rt