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 ...
随机推荐
- onclick 事件
onclick 事件 Event 对象 定义和用法 onclick 事件会在对象被点击时发生. 请注意, onclick 与 onmousedown 不同.单击事件是在同一元素上发生了鼠标按下事件之后 ...
- onchange 事件
Event 对象 定义和用法 onchange 事件会在域的内容改变时发生. 语法 onchange="SomeJavaScriptCode" 参数 描述 SomeJavaScri ...
- Spring错误——Spring 注解——factory-bean reference points back to the same bean definition
背景:学习Spring,在使用注解@Bean的name属性配置<bean>实例时,不能注册实例成功 报错 WARNING: Exception encountered during con ...
- Intellij IDEA 设置启动JVM参数
目录 采用CMS垃圾回收配置: 采用G1垃圾回收配置: 参数说明: 通用参数: CMS机制才有的参数: G1机制才有的参数: 参考: 打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 v ...
- pm2常用的命令用法介绍
pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的,下面我们来看pm2常用的命令用法介绍吧 ...
- $set()的正确使用方式
vue给对象新增属性,并触发视图更新 如下代码:给student对象新增age属性 data () { return { student: { name: '', sex: '' } } } 众所周知 ...
- C# 绘制圆角矩形
Graphics g = e.Graphics; // 圆角半径 ; // 要实现 圆角化的 矩形 Rectangle rect = , , panel4.Width - cRadius, panel ...
- 虚拟机里C盘空间不够 用Macrium Reflect工具克隆
一个很重要的虚拟机,因为需要装slack, 进而需要装 .NET4.5 , 结果发觉C盘不够了. 只好重新添加了一个80G的虚拟硬盘,然后用 Macrium Reflect工具把原来的C盘和引导分区, ...
- caffe生成deploy.prototxt文件
参考: http://blog.csdn.net/cham_3/article/details/52682479 以caffe工程自带的mnist数据集,lenet网络为例: 将lenet_train ...
- Django-2.1基础操作
创建项目 安装django pip3 install django #查看django版本 django-admin --version python -m django --version 2.1. ...