实验报告pdf效果图

 

 

 

 

 

 

 

 

 

 

 

 

 latex源码

使用XeLatex方式编译,matlab代码的高亮用了mcode包。

\documentclass[12pt, a4paper]{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\usepackage[UTF8]{ctex}
\usepackage{array}
\usepackage{ctex}
\usepackage{amsmath}
\usepackage{epsfig}
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{cite}
\usepackage{graphicx}
\usepackage{indentfirst}
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
\setlength{\parindent}{2em}
\setlength\parskip{.3 \baselineskip}
\begin{document}
	\begin{center}
		\vspace{0.2in}
		\noindent{\fontsize{14pt}{1em}\selectfont\textbf{实验二\quad MATLAB编程环境与语言基础 }} \\ [12pt]
		\noindent{\fontsize{14pt}{1em}\textbf{实验报告}}  \\ [12pt]
		{\fontsize{11pt}{1.2em}\selectfont
			20级\\ [10pt]
			C2H2\\ [10pt]
			202012345678 \\ [10pt]
		}
	\end{center}
	\begin{center}
    	\section{实验目的}
    \end{center}
    \begin{enumerate}
    	\item 熟悉 MATLAB编程环境和常见窗口
    	\item 学会使用帮助文档系统查找所需信息
    	\item 掌握 MATLAB向量、矩阵、数组的构建方法
	\item 掌握 MATLAB向量、矩阵、数组的基本运算方法
	\item 掌握 MATLAB 向量、矩阵、数组相关的常用数学函数
	\item 熟悉字符串的常用操作
    \end{enumerate}
	\begin{center}
    	\section{实验步骤}
    \end{center}
	\subsection{熟悉 MATLAB的5个基本窗口}
	\begin{enumerate}
	\item Command Window(命令窗口)
    	\item Workspace(工作空间窗口)
    	\item Command History(历史命令窗口)
	\item Current Directory(当前目录命令窗口)
	\item Help Window(帮助窗口)
	\end{enumerate}
	\subsubsection{命令窗口(Command Window)}
	
	在命令窗口中依次输入以下命令:
	\begin{lstlisting}[language=matlab]
x=1
y=[1 2 3
    4 5 6
    7 8 9];
z1=[1:10],z2=[1:2:5];
w=linspace(1,10,10);
t1=ones(3),t2=ones(1,3),t3=ones(3,1)
t4=zeros(3), t5=eye(4)
	\end{lstlisting}
	\subsubsection{工作空间窗口(Workspace)}

	单击工作空间窗口右上角的按钮,将其从MATLAB主界面分离出来。

	\begin{enumerate}
	\item 在工作空间查看各个变量,或在命令窗口用who,whos(注意大小写)查看各个变量。
	\item 在工作空间双击变量,弹出Array Editor窗口(数组编辑器窗口),即可修改变量。
	\item 使用save 命令把工作空间的全部变量保存为my\_var.mat文件。
	\begin{lstlisting}[language=matlab]
save my_var.mat
	\end{lstlisting}
	\item 输入下列命令:
	\begin{lstlisting}[language=matlab]
clear all
	\end{lstlisting}
	观察工作空间的变量是否被清空。

	\item 使用load命令把刚才保存的变量载入工作空间。
	\begin{lstlisting}[language=matlab]
load my_var.mat
	\end{lstlisting}
	\item 清除命令窗口命令:
	\begin{lstlisting}[language=matlab]
clc
	\end{lstlisting}
	\end{enumerate}
	\subsubsection{历史命令窗口(Command History)}
	打开历史命令窗口,可以看到每次运行MATLAB的时间和曾在命令窗口输入过的命令,练习以下几种利用历史命令窗口重复执行输入过的命令的方法。
	\begin{enumerate}
	\item 在历史命令窗口中选中要重复执行的一行或几行命令,右击出现快捷菜单,选择Copy,然后Paste到命令窗口。
	\item 历史命令窗口中双击要执行的一行命令,或选中要重复执行的一行或几行命令后,用鼠标拖动到命令窗口执行。
	\item 历史命令窗口中选中要重复执行的一行或几行命令,右击出现快捷菜单,选择Evaluate Selection,也可以执行。
	\item 历史命令窗口中选中要重复执行的一行或几行命令,右击出现快捷菜单,选择Evaluate Selection,也可以执行。
	\item 或者在命令窗口使用方向键的上下键得到以前输入的命令。
	\end{enumerate}

例如,按方向键“ $\uparrow$ ”一次,就重新将用户最后一次输入的命令调到 MATLAB提示符下。

重复地按方向上键“$\uparrow$”,就会在每次按下的时候调用再往前一次输入的命令。类似地,按方向键“$\downarrow$”的时候,就往后调用一次输入的命令。按方向键“$\leftarrow$”或者方向键“$\rightarrow$”就会在提示符的命令中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本的方法编辑这些命令。

	\subsubsection{当前目录命令窗口(Current Directory)}

	MATLAB的当前目录即是系统默认的实施打开、装载、编辑和保存文件等操作时的文件夹。打开当前目录窗口后,可以看到用"save"命令所保存的my\_var.mat文件是保存的目录。

	\subsubsection{帮助窗口(Help Window)}

	单击快捷工具栏的?图标,或选择菜单View|IHelp,或选择菜单Help|MATLAB Help 都能启动帮助窗口。

	\begin{enumerate}
	\item 通过Index选项卡查找log2()函数的用法,在Search index for 栏中输入需要查找的词汇log2",在左下侧就列出与之最匹配的词汇条目,选择“log2[1]”,右侧的窗口就会显示相应的内容
	\item 也可以通过Search 选项卡查找 log2()函数的用法。Search 选项卡与Index 选项卡不同,Index 只在专用术语表中查找,而 Search搜索的是整个HTML帮助文件
	\item 从帮助窗口左侧边的目录栏中找到“Image Processing Toolbox",并点击"Image Processing Toolbox 快速入门”,快速了解图像处理相关的基础知识。
	\end{enumerate}
	
	\subsection{向量的生成和运算}
	\begin{enumerate}
	\item 向量的生成
		\begin{enumerate}
	\item 直接输入法
	\begin{lstlisting}[language=matlab]
A=[2,3,4,5,6] % 行向量
B=[1;2;3;4;5] % 列向量
	\end{lstlisting}
	\item 冒号表达式法
	\begin{lstlisting}[language=matlab]
A=1:2:10
B=1:10
C=10:-1:1
	\end{lstlisting}
	\item 函数法
	linspace()是线性等分函数,logspace()是对数等分函数。
	\begin{lstlisting}[language=matlab]
A=linspace(1,10)% linspace()是线性等分函数
B=linspace(1,30,10) % linspace()是线性等分函数
C=logspace(0,4,5)% logspace()是对数等分函数
	\end{lstlisting}
		\end{enumerate}
	\item 向量的运算
	\begin{enumerate}
	\item 基本运算
	
	维数相同的行向量之间可以相加减,维数相同的列向量也可相加减,标量可以与向量直接相乘除。
	\begin{lstlisting}[language=matlab]	
A=[1 2 3 4 5],B=3:7
AT=A',BT=B'
E1=A+B,E2=A-B
F=AT-BT
G1=3*A,G2=B/3
	\end{lstlisting}

	\item 向量的点积与叉积运算
	\begin{lstlisting}[language=matlab]	
A=ones(1,10);B=(1:10);BT=B';
E1=dot(A,B)
E2=A*BT

clear
A=1:3,B=4:6,
E=cross(A,B)
	\end{lstlisting}
\end{enumerate}
	\end{enumerate}
\subsection{矩阵的创建、引用和运算}
\begin{enumerate}
\item 矩阵的创建和引用

矩阵是由m*n元素构成的矩形结构,行向量和列向量是矩阵的特殊形式。
\begin{enumerate}
\item 直接输入法
	\begin{lstlisting}[language=matlab]
A=[1 2 3;4 5 6]%注意观察创建规则
B=[1 4 7 
    2 5 8 
    3 6 9]
% 注意观察创建规则
A(1)
% 矩阵的单下标引用
A(4:end)
% 用“end”表示某一维数中的最大值
B(:,1)% 引用B中第一列中的所有元素
B(:)% 将B中的所有元素以列向量的形式输出
B(5)% 单下标引用
	\end{lstlisting}
\item 抽取法
	\begin{lstlisting}[language=matlab]
clear
A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
% 取 A 矩阵行数为 1~3,列数为 2~3 的元素构成子矩阵
B=A(1:3,2:3)
% 取A矩阵行数为1、3,列数为2、4的元素构成子矩阵
C=A([1 3],[2 4])
% 单下标抽取,注意其结果和前一句有什么不同?
D=A([1 3;2 4])

		\end{lstlisting}
\item 函数法
	\begin{lstlisting}[language=matlab]	
clear
A=ones(3,4)
B=zeros(3)
C=eye(3,2)
D=magic(3)
	\end{lstlisting}
\item 拼接法
	\begin{lstlisting}[language=matlab]
clear
A=ones(3,4)
B=zeros(3)
C=eye(4)

D=[A B]
F=[A;C]	
	\end{lstlisting}
\item 拼接函数和变形函数法
	\begin{lstlisting}[language=matlab]
clear
A=[0 1;1 1]
B=2*ones(2)
cat(1,A,B,A) % 沿行变化方向(垂直方向)拼接
cat(2,A,B,A) % 沿列变化方向(水平方向)拼接
repmat(A,2,2) % 二个参数的重复拼接
repmat(A,2) % 一个参数的重复拼接		
	\end{lstlisting}
\end{enumerate}
\item 矩阵的运算
\begin{enumerate}
\item 矩阵加减、数乘与乘法

已知矩阵\( A=\left[\begin{array}{rr}1 & 2 \\ 3 & -1\end{array}\right] \),\( B=\left[\begin{array}{rr}-1 & 0 \\ 1 & 2\end{array}\right] \)

要求求A+B,2A,2A-3B,AB,只需在matlab输入:
	\begin{lstlisting}[language=matlab]
A=[1 2;3 -1];B=[-1 0;1 2];
A+B
2*A
2*A-3*B
A*B
	\end{lstlisting}
\item 矩阵的逆矩阵
	\begin{lstlisting}[language=matlab]
format rat;
A=[1 0 1;2 1 2;0 4 6]
A1=inv(A)
A*A1
	\end{lstlisting}
\item 矩阵的除法
	\begin{lstlisting}[language=matlab]
a=[1 2 1;3 1 4;2 2 1],b=[1 1 2],d=b'
c1=b*inv(a),c2=b/a % 右除
c3=inv(a)*d,c4=a\d % 左除
	\end{lstlisting}
\end{enumerate}
\end{enumerate}
\subsection{多维数组的创建及运算}
\begin{enumerate}
\item 多维数组的创建
	\begin{lstlisting}[language=matlab]
A1=[1,2,3;4 5 6;7,8,9];
A2=reshape([10:18],3,3);
T1(:,:,1)=ones(3);T1(:,:,2)=zeros(3)
T2=ones(3,3,2)
T3=cat(3,A1,A2),T4=repmat(A1,[1,1,2])
	\end{lstlisting}
\item 多维数组的运算

数组运算用小圆点加在运算符的前面表示,以区分矩阵的运算。特点是两个数组相对应的元素进行运算。
	\begin{lstlisting}[language=matlab]
A=[1:6];B=ones(1,6);
C1=A+B,C2=A-B
C3=A.*B,C4=B./A,C5=A.\B
	\end{lstlisting}
\end{enumerate}

\subsection{字符串的操作}
\begin{enumerate}
\item 字符串的创建
	\begin{lstlisting}[language=matlab]
S1='I like MATLAB.'
S2='I''m a student.'
S3=[S2,'and ',S1]	
	\end{lstlisting}
\item 求字符串长度
	\begin{lstlisting}[language=matlab]
length(S1)
size(S1)
	\end{lstlisting}
\item 字符串与一维数值数组的相互转换
	\begin{lstlisting}[language=matlab]
CS1=abs(S1) % 转换得到字符的ASCII码
CS2=double(S1)
char(CS2)
setstr(CS2)	
	\end{lstlisting}
\end{enumerate}•
	\begin{center}
    	\section{实验结果}
	\subsection{熟悉 MATLAB的5个基本窗口}
    \end{center}
	\subsubsection{命令窗口(Command Window)}
	命令运行后,除x=1外,显示的变量见图1:
	\begin{figure}[htbp]
	\centering
	\includegraphics[scale=1]{命令行.png}
	\caption{显示的变量值}
	\end{figure}
%\subsection{向量的生成和运算}
%	\begin{enumerate}
%	\item 向量的生成
%		\begin{enumerate}
%		\item 直接输入法
%			\begin{figure}[htbp]
%			\centering
%			\includegraphics[scale=1]{图2.png}
%			\caption{显示的变量值}
%			\end{figure}
%		\item 冒号表达式法
%			\begin{figure}[htbp]
%			\centering
%			\includegraphics[scale=1]{图3.png}
%			\caption{显示的变量值}
%			\end{figure}
%		\item 函数法
%			
%			命令运行后,除A是一个大小为1*100 double的矩阵,值为在[1,10]上线性等分的结果外,显示的变量见图4:
%			\begin{figure}[htbp]
%			\centering
%			\includegraphics[scale=0.8]{图4.png}
%			\caption{显示的变量值}
%			\end{figure}
%		\end{enumerate}
%	\item 向量的运算
%		\begin{enumerate}
%		\item 基本运算
%		
%		即为把程序运行一遍后得到的结果。
%		\item 向量的点积与叉积运算
%		
%		E1和E2结果一样;E为A和B叉乘的结果。
%		\end{enumerate}
%	\end{enumerate}
	
	其他实验结果均为把程序运行得到的结果,故不在此赘述。
	\begin{center}
    	\section{思考与练习解答}
    	\end{center}
	\subsection{熟悉 MATLAB的5个基本窗口}
		\subsubsection{命令窗口(Command Window)}
		\begin{enumerate}
		\item 
			问:变量如何声明,变量名须遵守什么规则、是否区分大小写?
			
			答:变量在赋值的时候声明。变量名遵循的规则有:
			\begin{itemize}
			\item 变量名区分字母的大小写,因此B与b表示的是不同的变量。
			
			\item 变量名只能由字母、数字和下划线组成,且必须以英文字母开头。例如:b,b1,b1a都是合法的,而1b,b,b.2,{b}都是不合法的。
			
			\item 变量名长度不得超过最大长度限制,超过的部分将被忽略。不同的MATLAB版本,变量的最大长度限制是不同的,用户可以使用 namelengthmax函数得到该用户使用的 MATLAB版本所规定的变量名长度。
			
			\item 关键字(如for、end和if等)不能作为变量名。常量是指那些在 MATLAB中已预先定义其数值的变量,也称预定义变量。变量命名时应尽量避开这些预定义变量。
			\end{itemize}	
			
		由前述规则可知,变量名区分大小写。
		
		\end{enumerate}
		\subsubsection{工作空间窗口(Workspace)}
		\begin{enumerate}
		\item
			问:whos与who命令的区别是什么?
		
			答:在命令行输入whos指令,显示一张内容为工作空间中变量的Name、Size、Bytes、Class、Attributes属性的表;在命令行输入who指令,显示工作空间中的所有变量名。

		\item   问:在命令窗口查看变量 t5的内容,采用如下命令可以吗?
		
		>>t5;
		
			答:如果是想查看t5的值,在大小不受限的情况是可以的。如果它的大小超过了限制,在命令行无法显示该值,则应在工作空间窗口查看。
			
		\item   问:使用save 命令把工作空间的全部变量保存ws\_vars.mat文件。该mat文件的具体存储位置在哪里?
		
		答:在当前文件夹。
		
		\item 问:clear all和clear的区别?
		
		答:如果直接使用clear all和clear,没有区别。如果在clear后面加上变量名(如clear a),则变量a被清除。
		\end{enumerate}
		\subsubsection{历史命令窗口(Command History)}
		\begin{enumerate}
		\item 	问:执行历史命令的方法有几种?如何操作?
		
				答:执行历史命令的方法有2.1.3叙述的5种。操作见2.1.3。
		
		\item 	问:在命令窗口使用方向键的作用是什么?
		
				答:查看上一条/下一条历史命令;移动光标编辑命令。
		\end{enumerate}
		
		\subsubsection{当前目录命令窗口(Current Directory)}
		\begin{enumerate}
		\item 	问:你保存的my\_var.mat文件目录是什么?为什么?
		
				答:是当前文件夹。因为在没有指定保存文件目录的情况下,默认保存在当前文件夹。
		\end{enumerate}
		
		\subsubsection{帮助窗口(Help Window)与图像处理工具箱的使用}
		\begin{enumerate}
		\item 	问:启动帮助文档的方法有几种?如何操作?
				
				答:包括但不限于2.1.5提到的3种。操作见2.1.5。
		\end{enumerate}
	
		\subsection{向量的生成和运算}
		\begin{enumerate}
		\item 	问:使用linspace()函数创建0~6之间的x坐标向量。如果采用冒号运算符应该如何生成?下面这种方法可行吗?
		
		x=[0:6/100:6]
		
				答:x=[0:6/99:6]。下面这种方法不可行,因为从0到6,如果步长为6/100,则会出现101个元素。
		\end{enumerate}
		
		\subsection{矩阵的创建、引用和运算}
		\begin{enumerate}
		\item 	问:什么是标量、向量、矩阵、数组?
		
				答:标量是一个独立存在的数,比如线性代数中的一个实数5就可以被看作一个标量,所以标量的运算相对简单,与平常做的算数运算类似。向量指一列顺序排列的元素,我们通常习惯用括号将这些元素扩起来,其中每个元素都又一个索引值来唯一的确定其中在向量中的位置。矩阵是按照长方形阵列排列的数值集合,矩阵一般指二维矩阵。 与上述的标量、向量、矩阵不同的是,数组是编程语言中的概念,类似数学概念的集合,由元素组成。数组也被称为有序的元素序列,通过下标可访问相应的元素,其中的元素一般类型相同。
				
		\item 	问:四者之间的关系是什么?
				
				答:向量、矩阵、数组由标量组成;数组是向量在编程语言中的体现;矩阵是二维数组。
				
		\item 	问:直接输入法创建矩阵的基本规则有哪些?
		
		答:在矩阵一行中的元素,可以用逗号或者空格分隔;如果要添加新行,使用分号或者换行分隔。
		
		\item 	问:两个矩阵进行水平拼接时其维度应满足什么条件?
		
				答:行数相等。
				
		\item 	问:两个矩阵进行垂直拼接时其维度应满足什么条件?
		
				答:列数相等。	
				
		\item 	练习:使用函数法、拼接法、拼接函数法和变形函数法,按照要求创建以下矩阵:
		
A为3×4的全1矩阵、B为3×3的0矩阵、C为3×3的单位阵、D为3×3的魔方阵、E由C和D 纵向拼接而成、F抽取E的2到5行元素生成、G由F经变形为3×4的矩阵而得、以G为子矩阵用复制函数(repmat)生成6×8的大矩阵H。

				求解:
	\begin{lstlisting}[language=matlab]
% 函数法
A=ones(3,4)
B=zeros(3,3)
C=eye(3,3)
D=magic(3)

E=[C;D] % 拼接法
E=cat(1,C,D) % 拼接函数法

F=E(2:5,:)
G=F'% 变形函数法
H=repmat(G,2) % 变形函数法
	\end{lstlisting}
	\item 	问:观察2.3.2(c)中结果c1是否等于c2,c3是否等于c4?
	
			答:等于。
			
	\item 	问:矩阵左除与右除的区别是什么?如何去记忆左除和右除?
	
			答:左除就是左边的数或矩阵作分母,右除就是右边的数或矩阵作分母。斜杠向左边倾斜就是左除,向右边倾斜就是右除。
		\end{enumerate}

\end{document}

下载地址:

含有latex源码和代码中用到的图片和mcode包,以及输出的pdf文档的压缩包下载链接:

csdn版:

MATLAB编程环境与语言基础实验报告:latex源码与相关依赖+pdf-其它文档类资源-CSDN文库

百度网盘版:

链接:https://pan.baidu.com/s/1OR6LMLBAdNdYIbEd8r0fDQ?pwd=udn8 
提取码:udn8 

mcode包的安装可参考:

如何在Latex中插入MATLAB代码_latex插入matlab代码_ρ爱上θ的博客-CSDN博客

posted on 2023-04-14 17:36  快乐的乙炔  阅读(0)  评论(0)    收藏  举报  来源