从现有矩阵创建新矩阵

3

我有一个Matlab矩阵,A =

 1     2     3
 4     5     6
 7     8     9
10    11    12

现在我想创建一个源自A的新矩阵B。新矩阵应该如下所示:B =
1   0
0   4
2   0
0   5
3   0
0   6

有没有可能不使用FOR循环来解决这个问题?


创建B的规范是什么?你能给出更一般的准则吗? - Squazic
如果矩阵A有x行和y列,则矩阵B应该有(y*2)行和2列。来自A的第1行和第n列的数据将被放置在B的(2n-1)行1列中,而来自A的第2行和第n列的数据将被放置在B的第2n行2列中。 - MKS
2个回答

5

通过一些索引可以轻松实现:

A=[1     2     3  ;
   4     5     6  ;
   7     8     9  ;
   10    11    12 ];

B = zeros(2*size(A,2),2);
B(1:2:end,1)=A(1,:); % put first row values in first column of c
B(2:2:end,2)=A(2,:); % put énd row values in 2nd column of c

0

如果你只使用4x4矩阵,那么是的。

你想要转换一个4x4矩阵,并且使用行x列约定,你可以像这样逐个访问A的元素A[row][column]

然后你想要一个6x2矩阵,那么你只需要用零来调用它B = zeros(6,2)

然后交替向下B[row][column] = A[row][column],你应该能够轻松地构建出它。


A的维度为4*n,其中n可以是任何整数。 - MKS
那么显然你需要使用for循环。你也可以使用while循环,但如果你试图考虑变量数量不确定的元素,那么你需要使用一种能够考虑到这一点的方法。为了绝对清楚,你是在编写MATLAB语言的函数,对吧? - Lee Jacobs
“然后交替向下”,你的描述有点含糊不清,没有循环的话怎么做呢?而且你的索引看起来很奇怪(楼主寻找的是Matlab解决方案,不是C或其他语言)。 - Gunther Struyf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接