matlab三维矩阵转为二维矩阵
用matlab读取一个6波段影像,读取的是m*n*6的三维矩阵,请问如何用reshape或者其他命令,把这个矩阵转化为k×6的二维矩阵呢?(其实就是在三维情况下,把m×n...
用matlab读取一个6波段影像,读取的是m*n*6的三维矩阵,请问如何用reshape或者其他命令,把这个矩阵转化为k×6的二维矩阵呢?(其实就是在三维情况下,把m×n的矩阵化为一维的)
谢谢! 展开
谢谢! 展开
3个回答
展开全部
方法1:
采用reshape处理。
方法2:
采用:squeeze 处理。
方法3:
在定义的时候,抽取元素形式为A=B(:,:,i)。
1.matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。
前者可以缩减为二维,而后者不能缩减为二维的主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有。
2.matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。
前者本来也应该算是三维的,可以缩减为二维,而后者不能缩减为二维的主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有。
展开全部
对啊,可以 用reshape来实现,只是实现的格式需要你自己把握
比如
for ii=1:4
for jj=1:3
for kk=1:2
A(kk,jj,ii)=ii+jj+kk;
end
end
end
B=reshape(A,[],3)
就是把Areshape成n*3的矩阵了
比如
for ii=1:4
for jj=1:3
for kk=1:2
A(kk,jj,ii)=ii+jj+kk;
end
end
end
B=reshape(A,[],3)
就是把Areshape成n*3的矩阵了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=rand(m,n,6)
b=reshape(m*n,6)
一个示例:
>> a=rand(2,3,2)
a(:,:,1) =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
a(:,:,2) =
0.2785 0.9575 0.1576
0.5469 0.9649 0.9706
>> b=reshape(a,6,2)
b =
0.8147 0.2785
0.9058 0.5469
0.1270 0.9575
0.9134 0.9649
0.6324 0.1576
0.0975 0.9706
b=reshape(m*n,6)
一个示例:
>> a=rand(2,3,2)
a(:,:,1) =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
a(:,:,2) =
0.2785 0.9575 0.1576
0.5469 0.9649 0.9706
>> b=reshape(a,6,2)
b =
0.8147 0.2785
0.9058 0.5469
0.1270 0.9575
0.9134 0.9649
0.6324 0.1576
0.0975 0.9706
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询