S.J.Chapman《MATLAB编程》中文版修正版_部分10

合集下载

S.J.Chapman《MATLAB编程》中文版修正版_部分5

S.J.Chapman《MATLAB编程》中文版修正版_部分5

by = input ('Enter y value of point b:');
% Evaluate function result = dist2 (ax, ay, bx, by); % Write out result. fprintf('The distance between points a and b is %f \n', result);
好的函数的应用可以通过数据隐藏使问题最小化。在主函数中的变量在函数中是不可见 的(除了在输入变量列表中的变量),在主程序中的变量不能被函数任意修改。所以在函数 中改变变量或发生错误不会在程序的其他部分发生意外的副作用。
128 | 第五章 自定义函数
好的编程习惯 把大的程序分解成函数,有很多的好处,例如,程序部分的独立检测,代码的可复用 性,避免意想不到的错误。
Calling sequence: res = dist2(x1, y1, x2, y2)
Define variables:
x1
--x-position of point 1
y1
--y-position of point 1
x2
--x-position of point 2
y2
--y-position of point 2
disp('Calculate the distance between two points:');
ax = input ('Enter x value of point a:');
ay = input ('Enter y value of point a:');
bx = input ('Enter x value of point b:');

S.J.Chapman《MATLAB编程》中文版修正版_部分9

S.J.Chapman《MATLAB编程》中文版修正版_部分9

9.8 位置和单位| 265pixels这些信息说明当前图象窗口的左下角距屏幕右边的距离为176pixel,距屏幕底边的距离为204pixel。

,图象的宽度为672pixel,上下高度为504pixel。

注意这是图象的可作图区,包括边界,滚动条,菜单,还有图象的标题区。

单位("units")属性的默认值为像素(pixels),但是它的属性值还可以为英尺(inches),公分(centimeters),点(points),或归一化坐标(normalixed coordinates)。

像素代表了屏幕像素,即在屏幕上可表示出来的最小的对象。

典型的计算机屏幕最小分辨为640×480,在屏幕的每一个位置都有超过1000的像素。

因为像素数因机算机屏幕的不同而不同,所以指定对象的大小也会随之改变。

归一化坐标是在0到1范围内。

在归一化坐标中,屏幕的左下角为[0,0]右上角为[1.0, 1.0]。

如果对象的位置归一化坐标系的形式描述,那么不同分辨率的显示器上对象的相对位置是固定的。

例如,下面的语句创建了一个图象,把图象放置在屏幕的上部,而不用考虑显示器的大小。

H = figure(1)set(H,'units', 'normalized','position',[0 .5 .5 .45])好的编程习惯如果你想把对象放置在窗口的特定位置,最好的方法是用归一化坐标,因为不用考虑显示器的大小。

9.8.2 坐标系对象和uicontrol对象的位置坐标系对象和uicontrol对象的位置同样可以用一个4元素向量表示,但它是相对于figure对象的位置。

一般说来,所有子对象的"position"属性都与它的父对象相关。

默认地,坐标系对象在一图象内的位置是有归一化单位指定的,(0,0)代表图象的左下角,(1,1)代表图象的右上角。

S.J.Chapman《MATLAB编程》中文版修正版_部分7

S.J.Chapman《MATLAB编程》中文版修正版_部分7

6.20 用函数 fplot 画出函数 f(x)= 1 ,x 在 0.1≤x≤10.0 中的图象。 x
第七章 稀疏矩阵 单元阵列 结构
在本章中我们要学习三种数据类型:稀疏矩阵,单元阵列和结构。稀疏矩阵是矩阵的一 种特殊形式,在这个矩阵中只对非零元素分配内存。单元阵列也是一种矩阵,它的每一个元 素可以是 MATLAB 任何一种数据类型。它们广泛应用于 MATLAB 用户图象界面(GUI) 函数。最后,结构提供了一种在单个变量中存储了不同类型的数据的方法,在这个变量中的 每一个数据项目都有一个独立的名字。
6.7 练习 | 197
函数 mat2str sprintf str2double str2num sscanf hex2num hex2dec dec2hex bin2dec base2dec dec2base bar(x, y)
barh(x, y)
compass(x, y)
pie(x) pie(x, explode) stairs(x, y) stem(x, y)
200 | 第七章 稀疏矩阵 单元阵列 结构
0000020000 0000002000 0000000200 0000000020 0000000002 这两个稀疏矩阵相乘需要 1900 次相加和相乘,但是在大多数时侯相加和相乘的结果为 0,所以我们做了许多的无用功。这个问题会随着矩阵大小的增大而变得非常的严重。例如, 假设我们要产生两个 200×200 的稀疏矩阵,如下所示 a = 5 * eye(200); b = 3 * eye(200); 每一个矩阵有 20000 个元素,其中 19800 个元素是 0。进一步说,对这两个矩阵相乘需 要 7980000 次加法和乘法。 我们可以看出对大规模稀疏矩阵进行存储和运算(其中大部分为 0)是对内存空间和 cpu 资源的极大浪费。不巧的是,在现实中的许多问题都需要稀疏矩阵,我们需要一些有效的方 示来解决这个问题。 大规模供电系统是现实世界中涉及到稀疏矩阵一个极好的例子。大规模供电系统可以包 括上千条或更多的母线,用来产生,传输,分配电能到子电站。如果我们想知道这个系统的 电压,电流和功率,我们必须首先知道每一条母线的电压。如果这个系统含有一千个母线, 这就要用到含有 1000 个未知数的联立方程组,包括一个方程,也就是说我们要创建含有 1000000 个元素的矩阵。解出这个矩阵,需要上百万次的浮点运算。 但是,在这个系统中,一条母线平均只它的三条母线相连,而在这个矩阵中每一行其他 的 996 个元素将为 0,所以在这个矩阵的加法和乘法运算中将会产生 0。如果在求解的过程 中这些 0 可以忽略,那么这个电力系统的电压和电流计算将变得简单而高效。

S.J.Chapman《MATLAB编程》中文版修正版_部分6

S.J.Chapman《MATLAB编程》中文版修正版_部分6

160 | 第五章 自定义函数表5.2No. x y No. x y 1 -4.91 -8.18 11 -0.94 0.21 2 -3.84 -7.49 12 0.59 1.73 3 -2.41 -7.11 13 0.69 3.96 4 -2.62 -6.15 14 3.04 4.26 5 -3.78 -5.62 15 1.01 5.75 6 -0.52 -3.30 16 3.60 6.67 7 -1.83 -2.05 17 4.53 7.70 8 -2.01 -2.83 18 5.13 7.31 9 0.28 -1.16 19 4.43 9.05 10 1.08 0.52 20 4.12 10.95 5.19 最小二乘拟合的相关系数 开发一个函数,既可以用于计算拟合输入数据的最小二乘直线的斜率m 和截距b 。

又可以计算拟合的相关系数。

输入数据点集(x ,y )由两个数据传递给函数,数组x 和y 。

计算m 和b 的公式在例4.7中已经给出。

相关系数r 的计算公式如下所示∑∑∑∑∑∑∑−−−=])()[(])()[())(()(2222y y n x x n y x xy n r (5.13)Σx 代表x 值的和 Σy 代表y 值的和Σx 2代表x 值的平方和 Σy 2代表y 值的平方和 Σxy 对应的x ,y 相乘的和 n 代表拟和中包括的点数用一个检测程序检测你的函数,输入参数与上题相同。

5.20 生日问题 生日问题:如果在一个房间有n 个人,那么有二个或多个人在同一天过生日的概率为多大?我们可以能过数学建模来解决这一问题。

编写一个程序,计算在n 个人中有二个或多个人在同一天过生日的概率,n 为输入参数。

编写一个程序来检测这个函数,当n=2,3,……,40时,二个或多个人在同一天过生日的概率为多大?5.21 用函数random0产生三个由随机数组的数组。

三个数组分别包含100,1000,2000个元素。

matlab教程(完整版)

matlab教程(完整版)

01 MATLABChapterMATLAB简介MATLAB是一种高级编程语言和环境,主要用于数值计算、数据分析、信号处理、图像处理等多种应用领域。

MATLAB具有简单易学、高效灵活、可视化强等特点,被广泛应用于科研、工程、教育等领域。

MATLAB提供了丰富的函数库和工具箱,方便用户进行各种复杂的数学计算和数据分析。

MATLAB安装与启动MATLAB界面介绍工作空间用于显示当前定义的所有变量及其值。

命令历史记录了用户输入过的命令及其输出结果。

基本运算与数据类型02矩阵运算与数组操作Chapter01020304使用`[]`或`zeros`、`ones`等函数创建矩阵创建矩阵使用`size`函数获取矩阵大小矩阵大小通过下标访问矩阵元素,如`A(i,j)`矩阵元素访问使用`disp`或`fprintf`函数显示矩阵信息矩阵信息矩阵创建与基本操作对应元素相加,如`C = A+ B`加法运算矩阵运算对应元素相减,如`C = A-B`减法运算数与矩阵相乘,如`B = k *A`数乘运算使用单引号`'`进行转置,如`B = A'`转置运算满足乘法条件的矩阵相乘,如`C = A * B`矩阵乘法使用`inv`函数求逆矩阵,如`B = inv(A)`逆矩阵数组创建数组大小数组元素访问数组操作数组操作01020304线性方程组求解数据处理与分析特征值与特征向量图像处理矩阵与数组应用实例03数值计算与数据分析Chapter数值计算基础MATLAB基本运算数值类型与精度变量与表达式函数与脚本数据分析方法数据导入与预处理学习如何导入各种格式的数据(如Excel、CSV、TXT等),并进行数据清洗、转换等预处理操作。

数据统计描述掌握MATLAB中数据统计描述的方法,如计算均值、中位数、标准差等统计量,以及绘制直方图、箱线图等统计图表。

数据相关性分析学习如何在MATLAB中进行数据相关性分析,如计算相关系数、绘制散点图等。

2023修正版matlab程序设计入门

2023修正版matlab程序设计入门

matlab程序设计入门1. 引言Matlab是一种较为常用的科学计算软件,广泛应用于工程、科学、金融等领域。

本文档将介绍Matlab程序设计的基本知识,帮助读者快速入门并掌握基本的编程技巧。

2. Matlab概述Matlab是由MathWorks公司开发的一种解释型高级编程语言和环境。

它的优势在于强大的计算和图形功能,使得它成为了数据可视化、矩阵运算和算法开发的首选工具。

Matlab支持使用脚本文件(以.m为扩展名)编写程序,也可以通过交互式命令行进行实时计算和调试。

它还提供了丰富的函数库和工具箱,方便用户进行各种数学分析和绘图操作。

3. 安装和配置Matlab在开始使用Matlab之前,我们首先需要和安装Matlab软件。

我们可以在MathWorks官方网站上购买和Matlab,在安装过程中按照提示完成安装。

在安装完成后,我们可能需要配置Matlab的环境变量,以便在命令行中使用Matlab命令。

具体的配置方法可以参考Matlab官方文档或者相关的教程。

4. Matlab基本语法Matlab的语法类似于其他编程语言,但也具有一些特殊的特性。

下面是一些Matlab编程的基本要点:4.1 变量和数据类型在Matlab中,我们可以使用变量来存储和操作数据。

变量名是区分大小写的,并且可以包含字母、数字和下划线,但不能以数字开头。

Matlab支持多种数据类型,包括数值型(如整数、浮点数)、字符串和逻辑型(true或false)。

变量可以通过赋值语句进行初始化和更新。

4.2 数组和矩阵Matlab的一个重要特性是对数组和矩阵的支持。

我们可以使用一维或多维数组来存储和处理数据。

矩阵则是一种特殊的二维数组,通常用于表示线性代数中的向量和矩阵。

Matlab提供了丰富的函数和运算符来对数组和矩阵进行操作,如索引、切片、运算等。

4.3 控制流语句Matlab支持常见的控制流语句,如条件语句(if-else)、循环语句(for、while)和函数定义等。

Stephen J.Chapman《MATLAB 编程(第二版) 》第三章

Stephen J.Chapman《MATLAB 编程(第二版) 》第三章
郑碧波翻译 ........................................................................................................1 3.1 自上而下的编程方法简介................................................................................................1 3.3 关系运算符和逻辑运算符................................................................................................4 3.3.1 关系运算符.............................................................................................................4 3.3.2 小心==和~=运算符................................................................................................5 3.3.3 逻辑运算符.............................................................................................................6 例 3.1.............................................................................................................

Stephen J.Chapman《MATLAB 编程(第二版) 》第二章

Stephen J.Chapman《MATLAB 编程(第二版) 》第二章
郑碧波翻译 Matlab 中文论坛首发
目录
第二章 MATLAB 基础 ....................................................................................................................1 2.1 变量和数组........................................................................................................................1 2.2 MATLAB 变量的初始化 ...................................................................................................3 2.2.1 用赋值语句初始化变量.........................................................................................3 2.2.2 用捷径表达式(short expressions)来赋值 .........................................................4 2.2.3 用内置函数来初始化.............................................................................................5 2.2.4 用关键字 input 初始化变量.................................................................
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
300 | 第十章 用户图形界面
只需敲“x”即可执行 Exit(退出)项。 助记键是通过在 Label 属性中的目标字母前面加上“&”字符来定义的。“&”不会被显
示出来,后面是字符会被加以下划线,它就成了助记键。例如,图 10.29 中的 Exit(退出) 菜单项的 Label 属性值是“E&xit”。
这种初期编译带来的开销(不利因素)相对较小,不过随着函数越来越大,这种开销变 得越来越重要。由于定义 GUI 的函数通常相当大,基于 GUI 的程序编译开销与其它类型的 程序相比也相对较大。换句话说,由于初期编译,GUI 程序运行得更慢。
幸运的是,我们可以避免这种开销:把 MATLAB 函数及脚本文件编译成伪代码,保存 的伪代码文件可以在将来立即执行。执行伪代码文件节省了初期编译时间,使程序运行得更 快。
MATLAB 采用 pcode 命令创建伪代码文件,这个命令采用下面的形式之一: pcode fun1.m fun2.m fun3.m ... pcode *.m 第一种形式编译给定名称的文件,第二种形式编译当前目录下所有的 M 文件。编译结 果以“p”保存。例如,你编译了文件 foo.m,那么输出将保存在 foo.p 文件中。 如果同一函数既存在于 M 文件中也存在于 p 文件中,MATLAB 将自动执行 p 文件中的 版本,这是由于该版本更快。然而,如果你修改了 M 文件,你一定要记得重新编译,否则 程序将仍然执行旧代码。 把文件编译成伪代码也有其它优点。在伪代码的形式把发布给其他人可以保护你在源代 码上的投资。它们可以自由执行,但别人就没那么容易重建文件得到你的(设计)理念。
ii = ii + 1; x(ii) = in(1); y(ii) = in(2);
10.6 菜单 | 303
%Get next (x,y) pair [in, count] = fscanf(fid, '%g', 2);%%%%读取数据 end % Data read in. Close file. fclose(fid); % Now plot the data. hline = plot(x,y,'LineWidth',3); %%%%绘线条 xlabel('x'); ylabel('y'); grid on; % Associate the context menu with line set(hline,'Uicontextmenu', handles.ContextMenu1); %%%%设置上下文菜单 %Save the line's handle as application data handles.hline = hline; %%%%把句柄保存为应用程序数据 guidata(gcbf, handles); end end
function LineDotted_Callback(hObject,eventdata,handles) set(handles.hline,'LineStyleห้องสมุดไป่ตู้,':');
function LineDashDot_Callback(hObject,eventdata,handles) set(handles.hline,'LineStyle','-.'); % --------------------------------------------------------------------
工具提示通过在对象的 TooltipString 属性中设置你想要显示的内容来定义。在本章末练 习中,你会被要求创建工具提示。
好的编程习惯 对 GUI 组件设置工具提示,为用户提供关于该组件功能的有用线索。
10.7.2 伪代码(p 码,pcode)
在程序执行过程中第一次执行函数时,MATLAB 把函数编译(或解析)成称为 pcode (伪代码的简称)的中间代码,然后执行它的运行时解析程序中执行伪代码。一旦函数被编 译,它就留中 MATLAB 的内存中,能够被重复执行而无需重新编译。不过,当 MATLAB 下次执行时,函数又得重新编译。
例 10.2 绘制数据点
编写程序,打开用户指定的数据文件,然后把文件中数据绘点画线。程序必须包含一个 文件(File)菜单,有打开(Open)和退出(Exit)项,还必须包含一个绑定到线条上的上 下文菜单,菜单的内容可以改变线条的风格。假设文件的数据是以(x,y)对的形式出现, 每行一对。
解决方案 本程序必须包含一个有打开(Open)和退出(Exit)菜单项的标准菜单和一个用来绘制 数据的坐标轴,也必须包含一个用来设定不同线条风格的上下文菜单,还必须把上下文菜单 绑定到描绘的线条中,上下文菜单项中应该包含实线、虚线、点线和虚点线等风格。 创建本程序的第一步是使用向导创建所需要的 GUI,本例中界面只有一组坐标轴(见图 10.30a)。然后,我们用菜单编辑器创建文件菜单,这个菜单包含了 Open(打开)和 Exit(退 出)项,如图 10.30b。注意我们必须使用菜单编辑器设置 Label,Tag 和每个菜单项的 callback 字符串。还必须为 File(文件)指定助记键“F”,为 Open(打开)指定“O”及为 Exit(退 出)指定“x”,并在 Exit 与 Open 之间设置分隔符,如图 10.30 所示。
剩下的回叫函数相当简单,mFileExit_Callback 函数仅仅是关闭图形,线条风格函数仅 仅设置线条风格。当用户鼠标在线条上面右击时,上下文菜单会弹出。如果用户从弹出的菜 单选择一项,相应的回叫函数将使用保存的线条句柄更改属性。这五个函数如图 10.32 所示。
程序最终如图 10.33。在你自己的电脑上实践,确保它正确运行。 % -------------------------------------------------------------------function mFileOpen_Callback(hObject, eventdata, handles) % Get the file to open [filename, pathname] = uigetfile('*.dat','Load Data'); %%%%获取文件名 if filename ~= 0
function LineSolid_Callback(hObject,eventdata,handles) set(handles.hline,'LineStyle','-');
function LineDashed_Callback(hObject,eventdata,handles) set(handles.hline,'LineStyle','--');
图 10.29 通过 ALT+f 打开显示的菜单,要退出只需单击“x”即可
10.6.4 创建上下文菜单
上下文菜单与创建普通菜单的方式相同,除了顶级菜单项是一个 uicontextmenu 外。 uicontextmenu 的父对象必须是一个图形。但上下文菜单也可以与任何图象对象绑定起来并 对鼠标右键做出响应。上下文菜单通过在菜单编辑器选择“Context Menu”项来创建。一旦 上下文菜单创建后,就可以在它下面创建任意数量的菜单项。
% Open the input file filename = [pathname filename]; [fid, msg] = fopen(filename, 'rt'); %%%%打开文件 % Check to see of the open failed. if fid < 0
% There was an error -- tell user. str = ['File' filename ' could not be opened.']; title = 'File Open Failed'; errordlg(str, title,'modal'); %%%%打开文件失败时的错误信息 else % File opened successfully, Read the (x,y) pairs from % the input file. Get first (x,y) pair before the % loop starts. [in, count] = fscanf(fid, '%g', 2); %%%%读取数据 ii = 0; while ~feof(fid)
要把上下文菜单与特定对象绑定起来,你必须把对象的 UiContextMenu 属性设置成 uicontextmenu 的句柄。这通常通过属性编辑器来完成,但也可以使用下面的 set 命令来做。 假如 Hcm 是一个上下文菜单的句柄,下面的语句将把这个菜单与用 plot 命令创建的线条绑 定起来。
H1 = plot(x,y); set (H1, 'UIContextMenu',Hcm); 在下面的例子中,我们创建一个上下文菜单,并把它与一个图对象联合起来。
10.6 菜单 | 301
(a) (b) 图 10.30 (a)plot_line 的界面 (b)菜单编辑器中的文件菜单
302 | 第十章 用户图形界面
(c) 图 10.30 续(c)菜单编辑器中的上下文菜单
下一步,我们采用菜单编辑器创建上下文菜单。这个菜单以 uicontextmenu 对象开始, 带有四个选项(如图 10.30c),同样,我们设置各项的 Label,Tag 和 callback 字符串。
1. 列出本章中介绍到的图形组件的类型。每一个目的是什么? 2. 什么是回叫函数? MATLAB 的 GUIs 是如何使用回叫函数的? 3. 描述创建基于 GUI 程序的步骤。 4. 描述数据结构句柄的目的。 5. MATLAB GUI 中是如何保存应用程序数据的?为什么要保存 GUI 中的应用程序数 据? 6. 如何使图对象不可见?如何关闭图对象对鼠标的单击或键盘输入的响应? 7. 本章中哪些 GUI 组件能对鼠标作业响应?哪些能对键盘输入作出响应? 8. 什么是对话框?如何创建对话框? 9. 模式对话框与无模式对话框之间的区别是什么? 10. 标准菜单与上下文菜单之间的区别是什么? 11. 什么是加速键?什么是助记键?
相关文档
最新文档