我有一个大型数组,如下所示:
1
4
5
3
6
2
7
4
3
我想重新排列这个看起来像这样的数组:
7 4 3
3 6 2
1 4 5
我的原始数组大小为13700x1,所以我不能手动完成,如果我使用重塑功能,数组会以错误的方式形成:
1 3 7
4 6 4
5 2 3
我希望我的意图很明确。谢谢!
答案 0 :(得分:4)
尝试
tmpArray = [1
4
5
3
6
2
7
4
3]
flipud(reshape(tmpArray, 3, 3).')
答案 1 :(得分:2)
} catch (Exception e) {
Log.e("MyApp", "Could not open data source", e);
}
答案 2 :(得分:2)
其他答案假设您的向量包含方形数量的元素4, 9, 16 ...
。这对于示例向量是正确的,但不适用于您实际使用的向量(根据问题,它是13700x1)。
这意味着flipud(reshape())
方法会出错:
已知尺寸的产品,3,不可分为总数 要素,13924。
如果您不想要方形矩阵,这不是问题,因为数字可以表示为任何数字的乘积:2, 5, 137
。
如果你想要一个方阵,你需要用零,NaN或其他东西填充矢量。这可以通过以下方式完成:
A = randi(100,13700,1); %% Random 13700x1 matrix
n = numel(A); %% Number of elements in A (13700 in this case)
elements = ceil(sqrt(n))^2; %% Number of elements needed in order to make a square matrix
B = [A; zeros(elements-n,1)]; %% Pad the vectors with zeros.
%% You can also d0 B = [A; nan(elements-n,1)];
final_matrix = flipud(reshape(B, sqrt(elements),[]).'); %% Final operation