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

MATLAB生成等递增区间均匀随机数运行结果异常求助

问题原因
  1. 区间更新逻辑错误:X轴区间参数k/l的更新放在了行循环末尾,导致每遍历完整行的所有X列才切换一次X区间,完全不符合每列对应一个X区间的设计逻辑。Y轴区间参数m/n的更新位置对应行维度迭代,逻辑正确。
  2. 网格维度不匹配:X轴014按步长1划分共14个区间,而初始化的`Data`矩阵为13行15列,X维度多1列,最终会生成超出014范围的X值。
  3. 可选优化:原代码中Data = round(rand(13,15))每个元素取值为0或1,即每个网格单元最多生成1个随机点,若需要每个单元生成多个随机点可自行调整Data的生成逻辑。
修正后可运行代码
% 初始化轴区间参数
x_start = 0; x_step = 1; x_interval_cnt = 14; % X轴共14个区间,覆盖0~14范围
y_start = 0.5; y_step = 0.5; y_interval_cnt = 13; % Y轴共13个区间,覆盖0.5~7范围

% 初始化随机点计数矩阵,行对应Y维度、列对应X维度
Data = round(rand(y_interval_cnt, x_interval_cnt)); 
total_point = sum(Data(:));
Z = zeros(total_point, 2);
current_idx = 1;
[row_total, col_total] = size(Data);

for i = 1:row_total
    % 计算当前行对应的Y区间上下限
    y_low = y_start + (i-1)*y_step;
    y_high = y_low + y_step;
    for j = 1:col_total
        % 计算当前列对应的X区间上下限
        x_low = x_start + (j-1)*x_step;
        x_high = x_low + x_step;
        if Data(i,j) ~= 0
            point_cnt = Data(i,j);
            % 生成当前网格内的均匀分布随机点
            Z(current_idx:current_idx+point_cnt-1, 1) = x_low + (x_high - x_low).*rand(point_cnt, 1);
            Z(current_idx:current_idx+point_cnt-1, 2) = y_low + (y_high - y_low).*rand(point_cnt, 1);
            current_idx = current_idx + point_cnt;
        end
    end
end    
plot(Z(:,1), Z(:,2), '+')
xlim([0 14])
ylim([0.5 7])
xlabel('X轴')
ylabel('Y轴')
原问题异常散点图

生成结果散点图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:36:03