关于#matlab#的问题,已知宽和高两个行向量,需要统计对应规格药品的数量,怎么构建这种矩阵,请各位专家解答!

img


~
我做的是数学建模2014年d题的第三问,想通过构建这个矩阵,选出对应药品少的横向隔板间隔,然后删除,以减少高度冗余。

代码实现:

function [result_mat] = calculate_drug_num(w, h)
% 计算不同规格药品的数量

% 获取纵向药品规格数量
h_num = length(h);
% 获取横向隔板间隔数量
w_num = length(w);
% 构建对应规格药品数量的矩阵
result_mat = zeros(h_num, w_num);

% 遍历每个间隔,统计该间隔不同规格药品的数量
for i = 1:w_num
    % 获取当前间隔的宽度
    cur_w = w(i);
    % 遍历每种药品规格,统计该规格药品的数量
    for j = 1:h_num
        % 获取当前规格药品的高度
        cur_h = h(j);
        % 统计该规格药品在当前间隔中的数量
        cur_num = floor(cur_w/cur_h);
        result_mat(j, i) = cur_num;
    end
end

% 输出构建好的矩阵
disp(result_mat);

end

解释: 首先获取横向隔板间隔数量和纵向药品规格数量,然后通过循环遍历每个间隔和每种药品规格,计算在当前间隔中该规格药品的数量,并将计算结果保存到对应位置的矩阵中。最后输出构建好的矩阵。