多维数组转换为一维向量

时间:2017-10-26 06:48:12

标签: matlab matrix multidimensional-array

我有一个与多维数组(本例中为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维矩阵,但我想问一下这是否是转换多维数组的正确方法。

1 个答案:

答案 0 :(得分:0)

我认为,如果你使用矢量计算,而不是循环,它将清除你的模糊性并加快处理速度。