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

如何在MATLAB中实现GPA计算及相关报告生成?

MATLAB成绩单作业代码修正与优化

一、核心问题修正

你的现有代码缺少读取Transcript.txt文件的关键步骤,grades/courses/credits三个变量未定义,直接运行会报错。另外,GPA计算默认用原始成绩加权,不符合国内工科院校常规的绩点换算规则,需要补充成绩转绩点的逻辑。

二、完整代码实现

以下是符合要求的全流程代码,包含文件读取、GPA计算、报告生成:

% 1. 读取逗号分隔的成绩单文件
% 假设Transcript.txt格式为:课程名称,成绩,学分(第一行为表头)
transcript_table = readtable('Transcript.txt', 'Delimiter', ',');

% 提取数据到变量
courses = transcript_table{:, 1};  % 课程名称(元胞数组)
raw_grades = transcript_table{:, 2};  % 原始成绩(数值数组)
credits = transcript_table{:, 3};  % 学分(数值数组)

% 2. 成绩转绩点(适配国内工科院校常见规则,可按学校要求调整)
% 示例规则:90-100=4.0,80-89=3.0,70-79=2.0,60-69=1.0,<60=0
grade_points = zeros(size(raw_grades));
grade_points(raw_grades >= 90) = 4.0;
grade_points(raw_grades >= 80 & raw_grades < 90) = 3.0;
grade_points(raw_grades >= 70 & raw_grades < 80) = 2.0;
grade_points(raw_grades >= 60 & raw_grades < 70) = 1.0;
% 若学校用百分制直接除以25的规则,替换上述逻辑即可

% 3. 计算GPA
total_weighted_points = sum(grade_points .* credits);
total_credits = sum(credits);
GPA = total_weighted_points / total_credits;

% 4. 生成GPAReport字符数组(保留两位小数)
GPAReport = sprintf('GPA为%.2f。', GPA);

% 5. 找出最高成绩对应的课程(支持多门课同分场景)
[max_raw_grade, max_indices] = max(raw_grades);
best_courses = courses(max_indices);

% 生成BestGrade字符数组
if length(best_courses) == 1
    BestGrade = sprintf('最高成绩%.2f分,对应课程:%s。', max_raw_grade, best_courses{1});
else
    course_list = strjoin(best_courses, '、');
    BestGrade = sprintf('最高成绩%.2f分,对应课程:%s。', max_raw_grade, course_list);
end

% 输出结果
disp(GPAReport);
disp(BestGrade);

三、关键优化点说明

  • 文件读取:用readtable处理逗号分隔文件,自动识别表头,新手易上手;若文件无表头,可添加'ReadVariableNames', false参数。
  • 绩点换算:补充了国内高校通用的绩点规则,可根据学校教务处要求修改阈值(如部分学校85分对应3.5)。
  • 多最高分处理:原代码仅取第一个最高分课程,优化后支持多门课同分场景,输出更严谨。
  • 变量命名:将原grades改为raw_grades,避免与绩点grade_points混淆,符合MATLAB代码规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:45:19