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

三维最小均方求解求助:获取矩阵第二维度j的最小均方及索引

解决Matlab中矩阵第二维度的最小均方索引问题

我来帮你搞定这个问题!首先得明确你具体的需求方向,因为你的描述有两种常见的解读场景,我会分别给出对应的解决方案:

情况1:对每个(i,z)组合,找到j维度上最小差异的索引

这种场景下,我们针对每个(i,z)位置,遍历j=1~24,找到使X(i,j,z)与Y(i,j,z)差异最小(均方值最小)的j索引:

clear all; clc;
X = randn(4,24,16); 
Y = randn(4,24,16);

% 1. 计算每个位置的平方差(单个元素的均方就是平方差)
sq_diff = (X - Y).^2;

% 2. 沿着第二维度(j维度)寻找最小值和对应的索引
% min函数的第三个参数2表示对第二维度操作
[min_mse_vals, min_j_indices] = min(sq_diff, [], 2);

% 3. 压缩冗余维度,让结果更易读(从(4,1,16)变为(4,16))
min_j_indices = squeeze(min_j_indices);
min_mse_vals = squeeze(min_mse_vals);

% 查看示例结果:第一个i和第一个z对应的最小j索引
disp(['i=1, z=1对应的最小j索引:', num2str(min_j_indices(1,1))]);
disp(['对应的最小均方值:', num2str(min_mse_vals(1,1))]);

情况2:找到整体均方最小的j索引

如果你的需求是计算每个j对应的全局均方误差(即整个X(:,j,:)和Y(:,j,:)的均方),然后找到使这个全局误差最小的j,代码如下:

clear all; clc;
X = randn(4,24,16); 
Y = randn(4,24,16);

% 1. 计算所有位置的平方差
sq_diff = (X - Y).^2;

% 2. 对每个j,计算所有i和z的均方误差(沿着第1和第3维度求均值)
mse_per_j = mean(sq_diff, [1 3]);

% 3. 找到最小全局均方对应的j索引
[min_total_mse, min_j] = min(mse_per_j);
min_j = min_j(1); % 提取标量索引

disp(['全局均方最小的j索引:', num2str(min_j)]);
disp(['对应的全局最小均方值:', num2str(min_total_mse)]);

关键说明

  • Matlab的min函数支持指定操作维度,第三个参数就是维度编号(这里第二维度是j,对应编号2)
  • squeeze函数用于移除维度为1的冗余维度,让结果矩阵更简洁
  • 如果需要计算向量级别的均方(比如X(:,j,z)是4维向量),可以用mean((X(:,j,z)-Y(:,j,z)).^2),这种场景下只需调整mean的维度参数即可批量计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:33:11