我有一个多维Matlab数组,它是使用ndgrid命令创建的变量创建的:
[Z,R,T,Es] = ndgrid(z,r,t,E)
其中z = r = 0且t是时间值的向量,E是二维矩阵,大小= [10,80]
我想将其重塑为尺寸= [10,80,长度(t)]的三维数组,其中向量t被复制为对应于E的10 * 80值中的每一个的第三维度矩阵值。
我该怎么做? - 我知道重塑函数有一定的顺序,它填充新的数组?
答案 0 :(得分:0)
我认为您可以使用permute
和repmat
让我假设t
是行向量以方便起见。
octave:41> t
t =
0.932698 0.658920 0.090389 0.314648 0.509211
octave:42> size(E)
ans =
10 180
octave:43> P = repmat(permute(t,[3,1,2]), [size(E,1), size(E,2), 1]);
octave:44> size(P)
ans =
10 180 5
octave:45> P(1:3,1:3, :)
ans =
ans(:,:,1) =
0.93270 0.93270 0.93270
0.93270 0.93270 0.93270
0.93270 0.93270 0.93270
ans(:,:,2) =
0.65892 0.65892 0.65892
0.65892 0.65892 0.65892
0.65892 0.65892 0.65892
ans(:,:,3) =
0.090389 0.090389 0.090389
0.090389 0.090389 0.090389
0.090389 0.090389 0.090389
ans(:,:,4) =
0.31465 0.31465 0.31465
0.31465 0.31465 0.31465
0.31465 0.31465 0.31465
ans(:,:,5) =
0.50921 0.50921 0.50921
0.50921 0.50921 0.50921
0.50921 0.50921 0.50921
我不确定这正是你要找的。但E
中的值未在任何位置显示,只保留维度,t
的值沿E
注意:如果t
是一个cloumn向量,则必须是permute(t, [2,3,1])
。