我有一个与多维数组(本例中为3维)转换为1维或2维数组相关的查询。我有一个三维矩阵,在二项分布后生成随机数。矩阵的三个维度表示cluster_nbrs,timeslots和server_nbrs。代码在MATLAB上实现。
cluster_nbrs = 3;
timeslots = 4;
server_nbrs = 2;
d_cts = zeros(cluster_nbrs,timeslots,server_nbrs); % Three Dimensional Matrix
for c = 1:cluster_nbrs
for t = 1:timeslots
for s = 1:server_nbrs
d_cts(c,t,s) = binopdf(randi(300),300,0.5);
s = s + 1;
end
t = t + 1;
end
c = c + 1;
end
现在,如果我想生成另一个只有cluser_nbrs和timeslots作为其维度的矩阵,那么我应该使用什么函数。我使用过这种方法,如果我犯了任何错误,请纠正我。
d_ct = zeros(cluster_nbrs,timeslots); % Two Dimensional Matrix
for c = 1:cluster_nbrs
for t = 1:timeslots
d_ct(c,t) = sum(d_cts(c,t,:))./server_nbrs;
t = t + 1;
end
c = c + 1;
end
如果我还想只使用cluster_nbrs维度的值,那么我就遵循了这个逻辑。
d_c = zeros(cluster_nbrs,1); % 1 Dimensional Matrix
for c = 1:cluster_nbrs
d_c(c,1) = sum(d_ct(c,:))./timeslots;
c = c + 1;
end
我正在获得1&的值。 2维矩阵,但我想问一下这是否是转换多维数组的正确方法。
答案 0 :(得分:0)
我认为,如果你使用矢量计算,而不是循环,它将清除你的模糊性并加快处理速度。