【发布时间】:2020-05-07 01:10:58
【问题描述】:
使用s1=size(A,1)、s2=size(A,2)、s3=size(A,3)、s4=size(A,4) 获取一个 4-D 矩阵 A。
考虑
B=reshape(A, s1*s2*s3*s4,1)
例如,
s1=2;
s2=3;
s3=2;
s4=4;
A(:,:,1,1)=[1 2 3; 4 5 6];
A(:,:,1,2)=[7 8 9; 10 11 12];
A(:,:,1,3)=[13 14 15; 16 17 18];
A(:,:,1,4)=[19 20 21; 22 23 24];
A(:,:,2,1)=[25 26 27; 28 29 30];
A(:,:,2,2)=[31 32 33; 34 35 36];
A(:,:,2,3)=[37 38 39; 40 41 42];
A(:,:,2,4)=[43 44 45; 46 47 48];
B=reshape(A, s1*s2*s3*s4,1);
%B=[1;4;2;5;3;6;25;28;26;29;27;30;7;10;8;11;9;12;...];
给定坐标(i,j,h,k),我希望您能帮助我编写一个函数,让我获得A(i,j,h,k) 在B 中的位置。
当A 是一个 3-D 矩阵时,我知道该怎么做。在这种情况下,
position_in_B= i + ( j-1 + (h-1)*s2 ) * s1;
如何将此结果扩展到 4-D 矩阵?
【问题讨论】:
-
为什么不使用 ind2sub?
-
我试过这个但不起作用:
i=1;j=1;h=1;k=1;ind = [i j h k];sz = [s1 s2 s3 s4];position_in_B = ind2sub(sz,ind); -
实际上
ind2sub似乎从B变为A。在这里我想反过来。 -
position_in_B = sub2ind(size(A), i,j,h,k)?
标签: matlab