我一直在尝试使用重塑来实现此行为。我是Matlab的新手,所以我一直在挣扎。
我有一个
3 x 2 x 5矩阵称为A
我想合并尺寸1到5,但不包括尺寸4。在合并尺寸时,我想按顺序在每一行中保留列。
我知道我可以做类似的事情
A = reshape(A,[12,2,1]),但我担心的是,这可能无法保留每一行中列的顺序,并且不允许我排除尺寸。
示例:
(:,:,1) =
0.3168 3.1825
1.5841 1.5766
-0.7892 3.0073
(:,:,2) =
-0.2131 3.9708
2.9435 0.4964
-0.2131 2.5985
(:,:,3) =
0.5012 -3.5328
0.4551 2.1314
-1.5956 3.4161
(:,:,4) =
-0.12 -3.28
-0.51 -2.14
-1.56 -3.61
(:,:,5) =
6.5012 3.538
0.4551 0.314
-0.5956 0.411
输出,比方说除第四个维度之外的所有维度
0.3168 3.1825
1.5841 1.5766
-0.7892 3.0073
-0.2131 3.9708
2.9435 0.4964
-0.2131 2.5985
0.5012 -3.5328
0.4551 2.1314
-1.5956 3.4161
6.5012 3.538
0.4551 0.314
-0.5956 0.411
答案 0 :(得分:2)
您可以通过巧妙地使用reshape
以及建立索引来实现所需的功能。另外,您将需要使用permute
(用于切换尺寸),因为您希望保持每个“切片”的完整性。
首先,很高兴知道您可以使用索引排除第四个切片。考虑以下示例:
A = randi(100,3,2,5)
idxdim3 = [1,2,3,5]; % Create an array of integers corresponding to the slices you want
B = A(:,:,idxdim3) % Extract all the slices you want, discarding the 4th
在这种情况下,这将为您提供[3 x 2 x 4]大小的数组。接下来,您可以尝试使用reshape
,但是会遇到问题。 reshape
在维度上不断发展,列是第一个维度,行是第二个维度,“切片”是第三个维度。如您所说,您希望按顺序将每一行中的列保持不变,但是reshape
会更改它们,然后再开始在三维空间中工作。因此,我们需要首先使用permute
使第二维和三维开关位置:
% Leave 1 as the first dimension, but switches dimensions 2 and 3 around:
C = permute(B,[1 3 2]);
现在我们可以reshape
调整为适当的大小:
D = reshape(C,[12 2 1]);
应该为您提供所需的结果。当然,我们可以将大多数这些语句合并为一行,如下所示:
A = randi(100,3,2,5); % Put your data here instead
idxdim3 = [1,2,3,5];
B = reshape( permute( A(:,:,idxdim3), [1 3 2]), 12, 2);
注意:如果将来要使用其他尺寸的A
,则可以指定其他尺寸,让reshape
计算其中一个尺寸。以下内容也将起作用:
B = reshape( permute( A(:,:,idxdim3), [1 3 2]), [], 2);
reshape
将为您计算12
。
示例输出:
A(:,:,1) =
44 80
39 19
77 49
A(:,:,2) =
45 76
65 28
71 68
A(:,:,3) =
66 50
17 96
12 35
A(:,:,4) =
59 26
23 51
76 70
A(:,:,5) =
90 14
96 15
55 26
B =
44 80
39 19
77 49
45 76
65 28
71 68
66 50
17 96
12 35
90 14
96 15
55 26
答案 1 :(得分:0)
您需要结合使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="control" id="spa">
Content
</div>
<div class="control" id="test">
<div class="method">
<a href="#" class="getid">Getid</a>
</div>
</div>
<div class="control" id="awesome">
Content
</div>
Js:
和permute
:
reshape