用matlab求解,急啊

用matlab生成一个m(m大于10)阶随机非负方阵,实现: 每列选取一个元素,使相邻三列的和最小。

望采纳

可以使用 rand() 函数生成 m 阶随机非负方阵,然后使用循环语句枚举每一列,再使用内置函数 min() 和 find() 来找到最小值并找到它的索引。

代码实现如下:

% 生成 m 阶随机非负方阵
m = 12;
A = rand(m);

% 初始化最小和
min_sum = Inf;

% 枚举每一列
for i = 2:m-1
    % 计算相邻三列的和
    sum = sum(A(:, i-1)) + sum(A(:, i)) + sum(A(:, i+1));
    % 更新最小和
    if sum < min_sum
        min_sum = sum;
        % 找到最小值的索引
        [~, idx] = min(A(:, i));
    end
end

fprintf('最小和为 %.2f,最小值在第 %d 列,第 %d 行\n', min_sum, i, idx);