matlab数学实验--第二章
控制流:
分支语句:
if (条件式),语句;end
if (条件式1),语句1;elseif (条件式2),语句2;……;else,语句;end
iwitch(分支变量) case(值1),语句1;case(值2),语句2;……;
otherwise语句;end
循环语句:
for 循环变量 = 初值:增量:终值,语句 ;end
while (条件式),语句;end
其他:
pause,
break:当循环执行到该语句是,程序将跳出循环
return,error
x = input('输入x的值:');
if x<10
y = cos(x+1);
else
y = x*sqrt(x);
end
y = 0,m=100;
for n = 1:m
y = y + 1/n/n % y加n的平方之一
end
y
clear;
t = 0,n = 1,m = 100;
while (n<=m)
t = t+1/n/n
n = n+1
end
M文件的分类:
分类:
脚本文件(script file)和函数文件(function file)
主要区别:
- 1. M脚本文件没有参数传递功能;函数文件有参数传递功能
- 2. M脚本文件中的变量是全局的,在命令窗口也可用;函数文件中的变量是局部
exch.m脚本文件
a = 1:10;
b = [11,12,13,14;15,16,17,18];
c=a;a=b;b=c;
a,b
函数文件
function [a,b] = fexch(a,b)
c=a;a=b;b=c;
[x,y] = fexch(x,y)
函数文件名与函数名也可以不相同。当两者不相同时,matlab将忽略函数名而确认函数文件名,因此调用时使用函数文件名。
若一个文件中定义了多个函数,则只有第一个函数作为主函数被外部调用;其它函数作为子函数只能被同一个文件中的主函数或其他子函数调用,而不能被外部调用;
函数句柄、匿名函数:
函数句柄:
编写M函数 eg2_1f.m
函数句柄fname=@ eg2_1f
feval(fname,1000)或者fname(1000)
eg:fname=@cos
fname(pi)
结果返回-1
inline函数:
当表达式比较短,使用inline函数比较方便
fun = inline(‘函数表达式’,’自变量’)
fname = inline('sum(1./(1:m).^2)','m');
fname(1000)
匿名函数:
fun = @(自变量)函数表达式
匿名函数的参数传递更灵活
k=2;fname=@(m)sum(1./(1:m).^k);
fname(100)
数据的输入输出:
Input函数:提示用户输入数据
disp函数:屏幕输出
由于disp函数输出的是字符串。如果要输出数字,那么必须先把数字转换成字符串
eg: 求ax2+bx+c=0的根
a = input('a=? ');
b = input('b=? ');
c = input('c=? ');
d = b*b-4*a*c;
x = [(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];
disp(['x1=',num2str(x(1)),'x2=',num2str(x(2))])
函数重载:
nargin: 记录调用函数输入变量个数;
nargout: 记录调用函数时输出变量的个数;
eg:
function [f1,f2] = exam_arg(a,b,c)
if nargin == 1 f1=a;
elseif nargin == 2 f1=(a+b)/2;
elseif nargin == 3 f1=(a+b+c)/3;
end
if nargout == 0
error('没有输出参数。');
elseif nargout == 2
f2 ='计算平均值';
end
1. tic,toc命令查看运行时间
2. profile on,profile viewer查看程序性能分析报告
eg: 编写m函数文件,对于任意输入的向量x,计算由下列分段函数值构成的向量。
f(x) =x2 ,x>1
f(x)=1,-1<x<1
f(x)=3+2x,x<=-1
profile on
x = -2:0.0001:2;
y1 = eg2_4a(x);
y2 = eg2_4b(x);
y3 = eg2_4c(x);
profile viewer
function y = eg2_4a(x)
n = length(x);
for k = 1:n
if x(k)>1
y(k) = x(k)^2;
elseif x(k)>-1
y(k) = 1;
else
y(k) = 3+2*x(k);
end
end
function y = eg2_4b(x)
y = zeros(size(x));
k1 = find(x>1);
y(k1) = x(k1).^2;
k2 = find(x-1 & x<=1);
y(k2) =1;
k3 = find(x<=-1);
y(k3) = 3 + 2 * x(k3);
function y = eg2_4c(x)
y = (x>1).* x.^2 + (x>-1 & x<=-1).*1+(x<=-1).*(3+2*x);
曲线图:
polt(x,y):x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。
plot(x1,y1,选项1,x2,y2,选项2,……,xn,yn,选项):多组折线
plot3(x1,y1,z1,选项1,……,xn,yn,zn,选项n):空间曲线;
fplot(fun’,[a,b]):绘制fun在区间[a,b]上的图形,fun可以是函数或表达式
|
线型 |
点标记 |
颜色 |
|
- 实线 :虚线 -. 点划线 -- 划线 |
. 点 O 园 X 叉子 + 加号 *星号 S 方块 d 菱形 ^ 朝上三角 V 朝下三角
< 朝左三角 P 五角形 h 六角形 |
b 蓝色 m 棕色 c 青色 r 红色 g 绿色 y 黄色 w 白色 k 黑色 |
绘制二位曲线
第一种:
x=0:pi/100:2*pi;
y=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y,'r*')
第二种:
fplot(@(x)2*exp(-0.5*x)*sin(2*pi*x),[0,2*pi],'gd')
绘制三位曲线:
t = 0:pi/50:2*pi;
x = 8*cos(t);y = 4*sqrt(2)*sin(t);
z = -4*sqrt(2)*sin(t);
plot3(x,y,z,'p')
曲面图形的绘制:
平面网格坐标的生成
x = z:dx:b; y = c:dy:d;
[X,Y] = meshgrid(x,y);
x=[1 2 3 4];
y=[2 4 5];
[X,Y]=meshgrid(x,y)
绘制三维曲面的函数:
mesh(x,y,z): 网格图
surf(x,y,z): 曲面图(填充网格)
contour(x,y,z): 等高线图(平面图)
contour3(x,y,z): 三围等高线图(空间图)
xa = -2:0.2:2;
ya = xa;
[x,y] = meshgrid(xa,ya);
z = x.*exp(-x.^2-y.^2);
mesh(x,y,z);pause(2) %网格图 %等待2秒
surf(x,y,z);pause(2) %填充网格
contour(x,y,z);pause %平面等高线 %等待,直到用户按下任意键
contour3(x,y,z);pause %立体登高线
contour(x,y,z,[0.1 0.1]);
surf(x,y,z);
图形说明和图形定制
图形标注:
title(图形名称) xlabel(x轴说明) ylabel(y轴说明)
循环语句:
hold on/off: 保留/释放现有图形
figure/close: 新开/关闭图形窗口、
grid on/off: 画/不画网格线,不带参数的grid命令在两种状态之间进行切换
box on/off: 加/不加边框线,不带参数的box命令在两种状态之间进行切换
axis on/off: 显示 /取消坐标轴
axis([xmin xmax ymin ymax zmin zmax])限定坐标轴的范围
x = linspace(0,2*pi,60);
y = sin(x); z = cos(x);
subplot(2,2,1);
plot(x,y);title('sin(x)');axis([0,2*pi,-1,1]);
subplot(2,1,2);
plot(x,z,'*');title('cos(x)');axis([0,2*pi,-1,1]);
x = linspace(-2,2,60);
y = x.^3;
subplot(2,2,2);
plot(x,y);title('x^3');axis([-2,2,-4,4]);
在线帮助和文件管理
在线帮助
- 1. help命令:是最基本的查询方法,可查询所有目录、指定目录、命令、函数;
- 2. lookfor关键字:搜索相关的命令和函数;
- 3. type M文件名:显示M文件代码;
- 4. which M文件名:显示指定文件的路径;
- 5. demo: 演示matlab功能;
PS:
查看某个函数的文档:doc 函数名;
也可以点击界面帮助哪里—>文档
1.求满足>200 的最小m值。
total=0;
m=0;
while true
total=total+log(1+m);
if total>1200
break;
end
m=m+1;
end
m
2编写M函数文件,使对任意函数输入x0和n,实现下列迭代
Xk+1=exp(-xk),k==0,2,……,n. n为总迭代次数,要求输出最后的xn..取x0=1,n=50计算。
3.(1)假定某天的气温变化记录如下表,试作图描述这一天的气温变化规律
|
时刻t(h) |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
|
|
温度。C(t) |
15 |
14 |
14 |
14 |
14 |
15 |
16 |
18 |
20 |
22 |
23 |
25 |
|
|
时刻t(h) |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
|
温度。C(t) |
28 |
31 |
32 |
31 |
29 |
27 |
25 |
24 |
22 |
20 |
17 |
18 |
16 |
t = 0:1:24;
T = [15 14 14 14 14 15 16 18
20 22 23 25 28 31 32 31
29 27 25 24 22 20 18 17 16];
plot(t,T,'r-');
考虑下列函数,计算误差平方和,并作图比较效果
二次函数,三次函数,四次函数
t = 0:1:24;
T = [15 14 14 14 14 15 16 18 20 22 23 25 28 31 32 31 29 27 25 24 22 20 18 17 16];
p2 = polyfit(t,T,2);
T2 = polyval(p2,t);
p2
deltaT2 = sum((T2-T).*(T2-T));
p3 = polyfit(t,T,3);
T3 = polyval(p3,t);
p3
deltaT3 = sum((T3-T).*(T3-T));
p4 = polyfit(t,T,4);
T4 = polyval(p4,t);
p4
deltaT4 = sum((T4-T).*(T4-T));
plot(t,T,'--k',t,T2,'-y',t,T3,'-rd',t,T4,'go');
title('观测值和各次拟合的比较');
(2)用matlab指令dlmwrite将上述数据输出到一个文本文件中,第一列是时刻,第二列是温度,要求用空格分隔数据。
(3)从工具Home选Import data 导入上述文件中的数据。
4.作出下列函数图像
(1)曲线y=x2cos(1+3x),-2<=x<=2(要求分别使用plot或fplot完成)
x = -2:0.1:2;
y = x.^2.*cos(1+3*x);
plot(x,y);
fplot(@(x)x.^2.*cos(1+3*x),[-2,2],'r-');
(2)椭圆x2/9+y2/25=1;
t = linspace(0,2*pi,100);
x = 3*cos(t);
y = 5*sin(t);
plot(x,y)
(3)空间曲线x=sin t, y = cos t, z = cos(2t),0<t<2*pi;
t = 0:0.01:2*pi;
x = sin(t);
y = cos(t);
z = cos(2*t);
plot3(x,y,z)
(4)半球面x = 2sin s *cos t, y = 2sin s* sin t, z = 2cos s,0<t<360度,0<s<90度。
theta = linspace(0,2*pi,50); fai = linspace(0,pi/2,25);
[theta,fai] = meshgrid(theta,fai);
x = 2*sin(fai).*cos(theta);
y = 2*sin(fai).*sin(theta);
z = 2*cos(fai);
surf(x,y,z)
6. 画出下列方程的曲面图及等高线图:
z=sin(x/2)*cos(y);
其中x的21个值均匀分布在[-2pi,2pi]范围,y的值均匀分布在[-1.5pi,1.5pi]。请使用subplot将产生的曲面图和等高线图在同一窗口上。
x = linspace(-2*pi,2*pi,21);
y = linspace(-1.5*pi,1.5*pi,21);
[X,Y] = meshgrid(x,y);
Z = sin(X/2).*cos(Y);
subplot(2,1,1);mesh(X,Y,Z);
subplot(2,1,2);contour3(X,Y,Z,12,'k');
matlab数学实验--第二章的更多相关文章
- matlab数学实验--第一章
一. 数据和变量: 省略号(三个英文句点):表示换行 历史指令调用:用方向键上下 数据显示格式: format short ...
- MATLAB数学实验总结
L1 MATLAB 基础知识 P6 表1-3 数据显示格式 format rat format long P20 表2-5 常用的矩阵函数 zeros(m,n) %零阵 eye(n) %单位阵 one ...
- 信号与系统实验序章0——MATLAB基础命令入门
本次开启新的系列,关于用Matlab实现常见信号和函数的生成和变换. 同时如果没有MATLAB基础,那么可以跟着本文一步一步学习Matlab的相关操作,本文旨在记录在信号与系统课程中MATLAB的学习 ...
- 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来 ...
- 【黑金原创教程】【TimeQuest】【第二章】TimeQuest模型角色,网表概念,时序报告
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- 第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
- 《JS权威指南学习总结--第二章词法结构》
第二章词法结构 内容要点: 一.注释 1. //表示单行注释 2. /*这里是一段注释*/ 3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/ 二.直接量 所谓直接量,就是程序中直接使用的 ...
- 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)
编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...
- java多线程编程核心技术——第二章
第一节synchronized同步方法目录 1.1方法内的变量为线程安全的 1.2实例变量非线程安全 1.3多个对象多个锁 1.4synchronized方法与锁对象 1.5脏读 1.6synchro ...
随机推荐
- 剑指offer(38)二叉树的深度
题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 题目分析 树的深度=左子树的深度和右子树深度中最大者+1 代码 fu ...
- mysql 5.7 运维命令
MySQL安装 1)卸载旧版本 a) 停掉mysql #pkill -9 mysqld b) 查看rpm包 # rpm -qa|grep -i mysql c) 删除 #yum -y remove m ...
- listview控件的使用
listview控件是用于实现向上下两个方向翻动的界面(类似于QQ音乐查找歌手时的哪个界面),但是listview只是提供了一个空架子并没有什么实质的东西,那么这些东西要从哪里获得呢,那就要用到适配器 ...
- 初始Vue
渐进式 JavaScript 框架 通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目 走进Vue what -- 什么是Vue 可以独立完成前后 ...
- Pandas 基础(8) - 用 concat 组合 dataframe
以各个城市的天气为例, 先准备下面的数据: 印度天气的相关信息: import pandas as pd india_weather = pd.DataFrame({ 'city': ['mumbai ...
- python 简单的自定义异常类模版
class CustomError(Exception): def __init__(self,ErrorInfo): super().__init__(self) #初始化父类 self.error ...
- asp.net mvc session锁问题
一.会话状态Session Session用于服务器端状态管理,使用Session之后,每个客户端都可以将实际的数据保存在服务器上,对于每个客户端的数据,将会生成一个对应的唯一的key(保存在客户端) ...
- 20175317 《Java程序设计》第二周学习总结
20175317 <Java程序设计>第二周学习总结 教材学习内容总结 第二周我学习了教材三四章的内容,了解了Java与C语言的相似与不同之处. 其中第二章学到了标识符与关键字.基本数据类 ...
- SOAPdenove 使用
0. 该软件原理 它以kerm为节点单位,利用de Bruijn图的方法实现全基因组的组装.何为de Bruijn............... contig 的构建过程: (1)选取初始Kmer, ...
- [数据结构]P1.3 栈 Stack
* 注: 本文/本系列谢绝转载,如有转载,本人有权利追究相应责任. 栈是一种先进后出的结构(FILO),常见的操作有:push 入栈.pop删除栈顶元素并返回.peek 查看栈顶元素 与其他线性结构一 ...