非常抱歉之前的修复仍然有误。在计算路径时,判断是否到达起点的条件有误。请使用以下修正后的代码:

% 读取Excel表格数据
data = xlsread('your_file.xlsx', 'Sheet1'); % 假设数据在第一个sheet中

% 定义起点和终点坐标
start_point = [91, 20];
end_point = [80, 140];

% 定义矩阵大小
matrix_size = size(data);

% 创建矩阵用于存储每个点的累计数据之和
sum_matrix = zeros(matrix_size);

% 创建矩阵用于存储路径上的点数
count_matrix = inf(matrix_size);
count_matrix(start_point(1), start_point(2)) = 0;

% 计算累计数据之和和途径的点数
for i = 1:matrix_size(1)
    for j = 1:matrix_size(2)
        if i == 1 && j == 1
            sum_matrix(i, j) = data(i, j);
            continue; % 跳过起始点
        end
        
        % 计算上方和左方的路径
        if i > 1 && j > 1
            [max_val, min_count] = max([sum_matrix(i-1, j), sum_matrix(i, j-1)]);
        elseif i > 1
            max_val = sum_matrix(i-1, j);
            min_count = count_matrix(i-1, j);
        elseif j > 1
            max_val = sum_matrix(i, j-1);
            min_count = count_matrix(i, j-1);
        end
        
        sum_matrix(i, j) = max_val + data(i, j);
        count_matrix(i, j) = min_count + 1;
    end
end

% 输出路径上的点数和数据之和
disp(['路径上的点数:', num2str(count_matrix(end_point(1), end_point(2)))]);
disp(['路径上的数据之和:', num2str(sum_matrix(end_point(1), end_point(2)))]);

% 获取路径上的点的坐标
path = [end_point];
current_row = end_point(1);
current_col = end_point(2);
while true
    if current_row == start_point(1) && current_col == start_point(2)
        path = [start_point; path];
        break;
    end
    if current_row > 1 && current_col > 1
        if sum_matrix(current_row-1, current_col) >= sum_matrix(current_row, current_col-1)
            current_row = current_row - 1;
        else
            current_col = current_col - 1;
        end
    elseif current_row > 1
        current_row = current_row - 1;
    elseif current_col > 1
        current_col = current_col - 1;
    end
    path = [current_row, current_col; path];
end

% 调整路径的坐标为实际坐标
path = path + repmat(start_point - [1, 1], size(path, 1), 1);

% 输出途径的点的坐标
disp('途径的点的坐标:');
disp(path);

在这个修正后的代码中,我们更新了判断到达起点的条件,以确保正确计算路径上的点数和数据之和,并获取途径的点的坐标。

再次非常抱歉之前的错误并给您带来困扰。希望这次修正的代码能够解决您的问题。如果还有其他问题,请随时提问。

MATLAB 代码修复:计算路径上的点数和数据之和

原文地址: https://www.cveoy.top/t/topic/PaG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录