You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为三维数组x(21,1,50)适配原有迭代生成多维数组的MATLAB代码

方案1:嵌套循环实现(和原有逻辑完全对齐,易读性强)

你原有逻辑是对单组长度为21的x计算滑动窗口外积的均值,现在新增的第三维对应50组独立的输入,只需要在外层加一层j的循环,输出结果扩为3维即可:

n = 11;
m = 11;
j_num = 50;
% 初始化输出:最后一维对应j=1~50的计算结果
Rz = zeros(m, m, j_num);

for j = 1:j_num
    % 取出当前j对应的单组x,尺寸和你最初的输入一致为(21,1)
    x_curr = x(:, :, j);
    R = zeros(m, m, n);
    for i = 1:n
        z = x_curr(i:i+m-1);
        R(:,:,i) = z * z';
    end
    Rz(:,:,j) = sum(R, 3) / n;
end

方案2:向量化优化实现(减少循环层数,运行效率更高)

如果需要提升运行速度,可以用hankel函数直接生成滑动窗口矩阵,省略内层的i循环:

n = 11;
m = 11;
j_num = 50;
Rz = zeros(m, m, j_num);

for j = 1:j_num
    % 生成滑动窗口矩阵,每列对应一个长度为11的窗口
    window_mat = hankel(x(1:11, :, j), x(11:21, :, j));
    % 批量计算所有窗口的外积和再取平均
    Rz(:,:,j) = (window_mat * window_mat') / n;
end

两种方案最终输出的Rz均为11×11×50的数组,Rz(:,:,j)就对应第j组输入的计算结果,和你原有单组场景的输出格式完全匹配。

内容的提问来源于stack exchange,提问作者faty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 10:12:02