【发布时间】:2020-02-28 09:19:51
【问题描述】:
A 是给定的N x R xT 数组。我必须将其水平拆分为 N 大小为 L x M 的子数组,然后将每个 z 组合成一个数组 K 并取一个平均值。
例如: A 是数组 rand(N,R,T)= rand( 16, 3 ,3);现在我要拆分它:
A=rand( 16, 3 ,3) : A(1,:,:), A(2,:,:), A(3,:,:), A(4,:,:), ... , A(16,:,:).
我有 16 片。
B_1=A(1,:,:); B_2=A(2,:,:); B_3=A(3,:,:); ... ; B_16=A(16,:,:);
下一步是每 3 个分组(例如)。
现在我要创建 K_i 为:
K_1(1,:,:)=B_1;
K_1(2,:,:)=B_2;
K_1(3,:,:)=B_3;
...
K_8(1,:,:)=B_14;
K_8(2,:,:)=B_15;
K_8(3,:,:)=B_16;
平均数组为:
C_1=[B_1 + B_2 + B_3]/3
...
C_8= [ B_14 + B_15 + B_16] /3
我已将其实现为:
A_reshape = reshape(squeeze(A), size(A,2), size(A,3),2, []);
mean_of_all_slices = permute(mean(A_reshape , 3), [1 2 4 3]);
Question 1 我已经手动检查过了。它给了我一个错误的结果。如何解决? [已解决]
EDIT 2我需要模拟以下计算:
将数组K_i的每个切片与另一个数组P_p取一个乘积:这意味着:
for `K_1` is given `P_1`): `B_1 * P_1` , `B_2 * P_1`, `B_3 * P_1`
...
for `K_8` is given `P_8`): `B_14 * P_8` , `B_15 * P_8`, `B_16 * P_8`
我已经解决了!!!
【问题讨论】:
-
想一想如何创建一个输入数组,该数组将清楚地表明结果是您所期望的。然后创建该数组并将您的代码扔给它,看看它是否按预期运行。
-
我不明白它是如何工作的:如果
K_2 = [ B_4 B_5 B_6]然后K_3 = [ B_7 B_8 B_9]...K_6 = [ B_16 B_17 B_18]和K_8 = [ B_22 B_23 B_24]!!请澄清这一点。跨度> -
@Dev-iL 我已经解决了,谢谢
标签: arrays matlab multidimensional-array mean correctness