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

如何按diameter指定区间拆分配对数组、计算weight均值并绘制相关性图

解决方法

你已经生成的逻辑索引subarray1可以直接用于筛选对应的weight值,两个数组长度一致、位置一一对应,同一位置的元素属于同一条配对数据,直接复用索引即可:

% 你原有代码
subarray1 = diameter <10^0.7 & diameter>=10^0.65;
meandiameter1 = mean(diameter(subarray1)); 
% 新增代码计算对应区间的weight均值
meanweight1 = mean(weight(subarray1));

如果需要批量处理所有0.05指数步长的区间,不需要手动逐个定义索引,可以用批量处理的方式简化代码:

  • 第一步先定义所有区间的边界:
% 按10的指数步长0.05生成区间边界,这里的上限1.2可以替换为你实际需要的最大指数值
bin_edges = 10.^(0.65:0.05:1.2);
  • 第二步给每个diameter分配所属区间编号:
bin_idx = discretize(diameter, bin_edges);
  • 第三步批量计算所有区间的直径、重量均值:
% MATLAB R2018a及以上版本可以直接用groupsummary
stats = groupsummary([diameter, weight], bin_idx, @mean);
% stats每一行对应一个区间,第2列为该区间平均直径,第3列为该区间平均重量

如果使用的MATLAB版本没有groupsummary函数,可以用循环实现:

n_bins = length(bin_edges) - 1;
mean_diam = zeros(n_bins, 1);
mean_weight = zeros(n_bins, 1);
for i = 1:n_bins
    current_idx = diameter >= bin_edges(i) & diameter < bin_edges(i+1);
    mean_diam(i) = mean(diameter(current_idx));
    mean_weight(i) = mean(weight(current_idx));
end
  • 最后绘制相关性图:
scatter(mean_diam, mean_weight)
xlabel('平均直径')
ylabel('平均重量')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:15:06