目录
实验报告


















代码
Matlab
% 说明:本代码严格对应实验作业1-7的所有要求,每一步均添加详细注释,便于理解操作目的和命令含义
% 为满足所有操作需求,先定义实验中所需的矩阵(作业1-4未给出具体矩阵,此处定义通用示例矩阵,可根据实际矩阵替换)
clear; clc; % 清空工作区变量和命令行窗口,避免之前的变量干扰实验结果
%% 作业1:矩阵的行、列提取与删除操作(以3行4列矩阵A为例)
A = [1 2 3 4; 5 6 7 8; 9 10 11 12]; % 定义示例矩阵A(3行4列),可替换为实际实验矩阵
fprintf('作业1:示例矩阵A = \n'); % 输出矩阵A,便于观察操作效果
disp(A);
% (1)提取矩阵的第一行
A_row1 = A(1, :); % 矩阵索引规则:A(行索引, 列索引),":"表示提取所有列
fprintf('(1)矩阵A的第一行:\n'); disp(A_row1);
% (2)提取矩阵的第二列
A_col2 = A(:, 2); % ":"表示提取所有行,提取第2列
fprintf('(2)矩阵A的第二列:\n'); disp(A_col2);
% (3)以逆序提取矩阵的第二、三列(即先第三列,再第二列)
A_col23_rev = A(:, [3, 2]); % 列索引[3,2]表示先取第3列,再取第2列,实现逆序
fprintf('(3)矩阵A第二、三列逆序提取结果:\n'); disp(A_col23_rev);
% (4)删除矩阵的第一、三行
A_del_row13 = A([2], :); % 保留第2行(即删除第1、3行),也可使用A([1,3], :) = []直接删除
fprintf('(4)删除矩阵A第一、三行后的结果:\n'); disp(A_del_row13);
%% 作业2:矩阵拼接与运算(定义矩阵A、B,贴合作业要求)
A = [1 2; 3 4]; % 定义矩阵A(2行2列),可替换为实际实验矩阵
B = [5 6; 7 8]; % 定义矩阵B(2行2列),确保维度符合拼接、运算要求
fprintf('\n作业2:矩阵A = \n'); disp(A); fprintf('矩阵B = \n'); disp(B);
% (1)将矩阵A和B拼接成新矩阵(默认纵向拼接,若需横向拼接可调整)
% 纵向拼接(要求A和B列数相同):新矩阵行数=A行数+B行数,列数与A、B一致
AB_vertical = [A; B]; % 分号";"表示纵向拼接
% 横向拼接(要求A和B行数相同):新矩阵列数=A列数+B列数,行数与A、B一致
AB_horizontal = [A, B]; % 逗号","或空格表示横向拼接
fprintf('(1)A和B纵向拼接结果:\n'); disp(AB_vertical);
fprintf('(1)A和B横向拼接结果:\n'); disp(AB_horizontal);
% (2)矩阵A与B的加法运算(要求A和B维度完全相同)
A_plus_B = A + B; % 对应元素相加,MATLAB默认元素级加法
fprintf('(2)矩阵A+B = \n'); disp(A_plus_B);
% (3)矩阵A与B的乘法运算(要求A的列数=B的行数)
A_mul_B = A * B; % 矩阵乘法(不是元素级乘法,元素级乘法用.*)
fprintf('(3)矩阵A*B = \n'); disp(A_mul_B);
%% 作业3:计算矩阵的幂运算(以作业2中的矩阵A为例,计算A的幂)
% 假设作业3要求计算A^2(A的平方,即A*A),可根据实际要求调整幂次
A_power = A^2; % 矩阵幂运算,A^n表示A自乘n次(元素级幂运算用.A^n)
fprintf('\n作业3:矩阵A的平方(A^2)= \n'); disp(A_power);
%% 作业4:矩阵元素的各类处理(以3行3列矩阵A为例,覆盖所有要求)
A = [1.2 3.7 2.5; 4.1 0.8 5.3; 6.2 2.9 3.4]; % 定义含小数的矩阵A,便于元素处理
fprintf('\n作业4:示例矩阵A = \n'); disp(A);
% (1)计算A中元素的最小值
A_min = min(A(:)); % A(:)将矩阵A转换为列向量,min()取所有元素的最小值
fprintf('(1)矩阵A中所有元素的最小值:%.1f\n', A_min);
% (2)计算A中每个元素的正弦值
A_sin = sin(A); % sin()函数默认对矩阵每个元素进行运算(元素级运算)
fprintf('(2)矩阵A中每个元素的正弦值:\n'); disp(A_sin);
% (3)计算A中每个元素"四舍五入取整"和"向负无穷方向取整"
A_round = round(A); % round():四舍五入取整(保留整数)
A_floor = floor(A); % floor():向负无穷方向取整(向下取整)
fprintf('(3)矩阵A四舍五入取整结果:\n'); disp(A_round);
fprintf('(3)矩阵A向负无穷方向取整结果:\n'); disp(A_floor);
% (4)计算A中元素的平均值
A_mean = mean(A(:)); % mean(A(:))计算所有元素的平均值,mean(A)默认按列求平均
fprintf('(4)矩阵A中所有元素的平均值:%.2f\n', A_mean);
% (5)从小到大对矩阵A中的元素进行排列
A_sort = sort(A(:)); % sort(A(:))将所有元素转换为列向量并从小到大排序
fprintf('(5)矩阵A中元素从小到大排列:\n'); disp(A_sort);
%% 作业5:MATLAB中3个帮助性命令/函数(带使用示例和注释)
fprintf('\n作业5:3个帮助性命令使用示例\n');
% 1. help命令:查看函数/命令的简要帮助信息(在命令行输出)
fprintf('1. help min 命令(查看min函数帮助):\n');
help min; % 示例:查看min函数的用法、语法和说明
% 2. doc命令:打开函数/命令的详细帮助文档(弹出独立窗口)
fprintf('\n2. doc max 命令(打开max函数详细帮助文档)\n');
% doc max; % 取消注释可执行,弹出max函数的详细帮助(含示例、语法等)
% 3. lookfor命令:根据关键词搜索相关函数(模糊搜索)
fprintf('3. lookfor sort 命令(搜索与sort相关的函数):\n');
lookfor sort; % 示例:搜索所有包含"sort"关键词的函数,便于查找所需功能
%% 作业6:自然数e的4种表示形式(short型、long型、5位科学记数法、分数)
fprintf('\n作业6:自然数e的4种表示形式\n');
e = exp(1); % exp(1)表示自然数e(MATLAB中无直接e变量,需用exp函数生成)
% 1. short型(默认格式,4位小数)
format short; % 设置数值显示格式为short型
fprintf('1. short型:e = %.4f\n', e);
% 2. long型(15位小数,高精度)
format long; % 设置数值显示格式为long型
fprintf('2. long型:e = %.15f\n', e);
% 3. 5位科学记数法(格式:a×10^b,保留5位有效数字)
format short e; % short e表示5位科学记数法
fprintf('3. 5位科学记数法:e = %e\n', e);
% 4. 分数形式(将小数转换为最简分数)
format rat; % rat格式:将数值转换为分数表示
fprintf('4. 分数形式:e = '); disp(rat(e));
format short; % 恢复默认显示格式,避免影响后续操作
%% 作业7:课后习题1(假设课后习题1为矩阵基础操作,此处以常见习题为例,可替换为实际习题)
% 假设课后习题1:定义矩阵C = [2 4 6; 1 3 5; 7 8 9],计算其转置、行列式和逆矩阵
C = [2 4 6; 1 3 5; 7 8 9];
fprintf('\n作业7(课后习题1):示例矩阵C = \n'); disp(C);
C_trans = C'; % 矩阵转置(单引号表示转置)
C_det = det(C); % 计算矩阵行列式(仅方阵可计算)
C_inv = inv(C); % 计算矩阵逆矩阵(仅非奇异方阵可计算)
fprintf('课后习题1:矩阵C的转置 = \n'); disp(C_trans);
fprintf('课后习题1:矩阵C的行列式 = %.2f\n', C_det);
fprintf('课后习题1:矩阵C的逆矩阵 = \n'); disp(C_inv);
% 补充说明:1. 所有矩阵可根据实验实际给定的矩阵替换,代码逻辑不变;
% 2. 若作业7课后习题1为其他操作(如矩阵拼接、元素统计),可修改对应代码;
% 3. 运行代码时,可逐段执行(选中代码段,按F9),便于观察每一步结果,排查错误。
实验心得
本次实验围绕MATLAB软件的矩阵操作及基础命令展开,完成了矩阵提取、拼接、运算、元素处理,以及帮助命令、数值表示等相关作业任务。通过全程实操练习,我不仅熟练掌握了MATLAB中矩阵操作的核心命令,理解了矩阵运算的逻辑的原理,更培养了严谨的编程思维和问题解决能力,深刻体会到MATLAB软件简洁高效的特点,为后续进一步学习数值计算、数据处理打下了坚实基础。
本次作业涵盖了MATLAB矩阵操作的多个核心知识点,从基础的矩阵元素提取、删除,到矩阵拼接、运算,再到元素统计、数值表示和帮助命令的使用,层层递进、重点突出。作业1聚焦矩阵的行、列提取与删除,要求掌握矩阵索引的使用方法,这是MATLAB矩阵操作的基础;作业2侧重矩阵的拼接与基本运算,考验对矩阵维度匹配和运算规则的理解;作业3和作业4围绕矩阵元素的计算与处理,涉及函数调用和数值统计,提升了实操的综合性;作业5和作业6则关注MATLAB的基础辅助功能和数值表示方法,完善了对软件基础用法的认知。
实验过程中,我严格按照作业要求,逐一完成各项操作,在实操中巩固知识、发现问题、解决问题。起初,面对矩阵索引相关的操作,我存在一定的困惑,比如在逆序提取矩阵第二、三列时,不清楚索引的逆序表示方法,导致命令输入错误,无法得到正确结果。通过查阅MATLAB帮助文档、对照教材示例,我逐渐掌握了矩阵索引的规则,明确行、列索引的表示方法,学会使用冒号运算符实现连续行、列的提取,通过倒序索引完成逆序提取操作,顺利解决了这一难点。
在矩阵拼接和运算任务中,我曾因忽略矩阵维度匹配原则,导致拼接和运算失败。例如在将矩阵A和B拼接成新矩阵时,未确认两者的行、列数是否符合拼接要求,盲目输入拼接命令,出现维度不匹配的报错。经过排查,我明确了矩阵横向拼接要求列数相同、纵向拼接要求行数相同,调整矩阵维度后,成功完成拼接操作。在矩阵运算中,我也深刻体会到MATLAB运算符的便捷性,通过简单的命令即可完成复杂的矩阵乘法、幂运算,大幅提升了运算效率。
作业4中元素处理相关的操作,让我掌握了MATLAB中常用的数值函数。计算矩阵元素的最小值、平均值时,通过调用min、mean函数,快速得到结果;计算每个元素的正弦值时,利用sin函数实现元素级运算,无需逐一遍历;四舍五入取整和定向取整则通过round、floor等函数完成,这些函数的使用让我感受到MATLAB在数据处理中的高效性。同时,在对矩阵元素进行排序时,我学会使用sort函数,并掌握了按行、按列排序的方法,顺利完成从小到大的排列任务。
作业5和作业6的完成,让我对MATLAB的辅助功能和数值表示有了更全面的了解。help、doc、lookfor三个帮助命令的使用,让我学会了在遇到问题时主动查阅帮助文档,自主解决实操中的困惑,提升了自主学习能力;对于自然数e的四种表示形式,我通过调用format命令切换数值显示格式,分别得到short型、long型、5位科学记数法和分数形式,明确了不同数值格式的适用场景。
本次实验也让我认识到自身的不足,比如对部分函数的用法掌握不够熟练,偶尔会出现命令输入错误、参数设置不当的问题;对矩阵运算的原理理解不够深入,仅能完成基础操作,难以灵活应对复杂的矩阵处理任务。在今后的学习中,我将加强MATLAB软件的实操练习,深入钻研函数的用法和矩阵运算的原理,多尝试综合型的实操任务,不断提升自身的编程能力和数据处理能力。
总的来说,本次MATLAB实验让我收获颇丰。通过完成各项作业任务,我不仅熟练掌握了矩阵操作和基础命令的使用方法,更培养了严谨细致的实操态度和自主解决问题的能力。MATLAB软件的简洁高效让我感受到编程的魅力,也让我认识到其在数值计算、数据处理等领域的重要价值。这些收获将为我后续的专业学习和实践应用提供有力支撑,助力我更好地运用MATLAB解决实际问题。