开头第一段
怎么讲,学matlab的当前目标是看懂别人的matlab代码,所以先跳过前面一堆命令行,看看matlab代码是个什么。
这一块内容也是我自己一边看书一边写,所以内容会不断增加的。写的不好不要骂我,但可以随便讲我,哈哈。估计也没太多人看,毕竟很基础的东西。
MATLAB程序
说明
首先,一个用文本形式保存的matlab代码有两种形式:matlab脚本和matlab函数,他们的扩展名都是.m。
脚本和函数相对于命令行的优点我就不说了……因为详细说我感觉很脑残……
创建
其次,创建方法是–>File|New|script(脚本)/Function(函数)。
创建好程序,那就要步入正题了,一个matlab程序应该怎么写,里面一堆函数怎么用,开始吧。
编写
1、注释
%注释文本
注释个是很简单格式。主要需要注意的就是注释的编码风格,要适当的编写注释以方便以后的阅读。
2、控制输入输出
matlab提供了很多输入输出命令。
命令 | 说明 |
---|---|
disp(A) | 显示数组A的内容 |
disp(‘text’) | 显示”内的文本串 |
format | 控制屏幕输出的显示格式 |
fprintf | 执行格式化的写入到屏幕或文件 |
x=input(‘text’) | 显示”内文本,等待用户输入,并将输入值赋值给x |
x=input(‘text’,’s’) | 显示”内文本,等待用户输入,并将输入值作为字符串赋值给x |
k=menu(‘title’,’option1’,’option2’,…) | 显示菜单,名称为title,选项是option1,option2,… |
3、逻辑与关系
一段程序基本结构,分支、循环,那要构造这些结构,首先要了解逻辑变量和关系运算符。
1关系运算符
什么鬼
关系运算符 | 含义 |
---|---|
< | 小于 |
> | 大于 |
== | 等于 |
~= | 不等于 PAY ATTENTION:这里和其他语言不太一样 |
2逻辑类和逻辑类构造函数
类名称:logical
构造函数:logical(A),其中A是一个数值数组
PS:A中任何非0数将会赋值为逻辑1
3逻辑运算符和函数
逻辑运算符
运算符 | 含义 | 说明 |
---|---|---|
~ | 非 | 这个不说了 |
& | 与 | 与运算,两个数组与,得到新的逻辑数组 |
| | 或 | 或运算 |
&& | 短路逻辑与 | 逻辑与,A&&B,则AB都真时为真,否则为假 |
|| | 短路逻辑或 | 逻辑或,A||B,AB都假则为假,否则为真 |
逻辑函数
逻辑函数 | 含义 |
---|---|
all(x) | 返回标量 矢量x中所有元素都非零,则标量为1,否则为0 |
all(A) | 返回一个行矢量 把A的每一列视为x,即同上 |
any(x) | 返回标量 矢量x中有任意非零元素,返回1,否则返回0 |
any(A) | 返回一个行矢量 把A的每一列视为x,即同上 |
find(A) | 返回一个行矢量 包含A中非零向量的索引 |
[u,v,w]=find(A) | 返回u,v,w u包含A中非零元素的行索引,v包含A中非零元素的列索引,w包含A中非零元素的值 |
finite(A) | 返回维数与A相同的数组 在A中元素为有限值的地方为1,否则为0 |
ischar(A) | 返回标量 A是字符数组,返回1,否则返回0 |
isempty(A) | 返回标量 A是空矩阵,返回1,否则返回0 |
isinf(A) | 返回维数与A相同的数组 A中元素为inf的地方,返回1,否则返回0 |
isnan(A) | 返回维数与A相同的数组 A中元素为nan的地方,返回1,否则返回0(nan:not a number) |
isnumeric(A) | 返回标量 A是数值数组,返回1,否则返回0 |
isreal(A) | 返回标量 A中没有任何元素具有虚部,返回1,否则返回0 |
logical(A) | 返回维数与A相同的数组 将A中元素转化为逻辑值 |
xor(A,B) | 返回维数与A和B相同的数组 A或B中该位置非零且不同时为零,则该位置为1,否则为零 |
4、分支语句/条件语句
if-else
if 逻辑表达式
语句
else
语句
end
if-else连续调用
——elseif
if 逻辑1
语句
elseif 逻辑2
语句
else
语句
end
switch语句
switch 表达式
case 值1
语句
case 值2
语句
...
otherwise
语句
end
5、循环
for循环
for 循环变量 = m:s:n %m初值,s步长,n终止值
语句
end
PS:
matlab中循环标记变量尽量不要使用i,因为i在matlab中被作为虚数单位。
隐含循环
Example:
x = [0:5:100];
y = cos(x);
等价于
for k = 1:21
x = (k-1)*5;
y(k) = cos(x);
end
while循环
while 逻辑表达式
语句
end
调试
——debug菜单
名称 | 功能 |
---|---|
save and run | (在哪儿呢……我没找到……等把书看完了我试试,嗯,找到了)保存并运行 |
step | 步进 |
step in | 进入被调函数步进 |
step out | 运行剩余函数部分,跳出到外部函数 |
画图
画图这应该也算一个重点了,因为图像是我们理解函数的重要途径和手段。
符号函数的绘制
说实话什么是符号函数我还不是很清楚。不过根据万能的百度,符号函数一般来说是指:
数学上的Sgn 函数返回一个整型变量,指出参数的正负号。语法Sgn(number), number 参数是任何有效的数值表达式。返回值如果 number 大于0,则Sgn 返回1;等于0,返回0;小于0,则返回-1。number 参数的符号决定了Sgn 函数的返回值。
不过我从这本matlab的书上看到它上面的一些举例代码来看,所处理的函数包括:余弦函数、螺旋曲线方程还有极为复杂的一个指数二元二次的函数,不过都有个特点,就是有正有负。所以,我理解为只要能根据自变量得出正负号信息的函数,就是符号函数。
可能不准确,以后发现不对了再来修改吧。但愿有大神能看到给我点拨一下。
平面图
- ezplot(f)
绘制f在[-2pi,2pi]内的函数 - ezplot(f,[min,max])
绘制f在制定区间内的函数
- 隐函数,区间x=[min,max],y=[min,max]
- 显函数,区间【min,max】
- (啥是显函数,啥是隐函数?)
- ezplot(f,[xmin,xmax,ymin,ymax])
- 绘制f在制定区间内的函数
曲面网格/表面图
- 网格图
- ezmesh(f)
- 绘制函数f(x,y)在[-2pi,2pi]内的的图像
- ezmeshc(f,domain)
- 绘制函数f(x,y)在domain区间内的图像
domain为4*1或2*1的数组,如[min,max],x=[min,max],y=[min,max]或[xmin,xmax,ymin,ymax]
- 绘制函数f(x,y)在domain区间内的图像
- ezmeshc(x,y,z)
- 绘制参数方程x = x(s,t), y = y(s,t), z =z(s,t)在默认区域-2pi\<’s,t<2pi区间的图像
- ezmeshc(x,y,z,[smin,smax,tmin,tmax])
- 绘制参数方程x = x(s,t), y = y(s,t), z =z(s,t)在规定区域的图像
- ezmeshc(…, n)
- 指定绘图的网格数n,默认为60
- ezmeshc(…, ‘circ’)
- 在指定区域的中心的圆盘上绘制图形
- ezmesh(f)
- 表面图
-aaa
先突兀的更新一下查看mat数据的方法:
查看mat数据
网上说直接load,然而load了之后并不能查看数据啊……只是显示了里面包含的数据类型和规模,那怎么具体表示里面的数据呢?我还是很想看看的……经过一系列百度得到以下结果:
For example
>> x=importdata('Inverse11.mat')
x =
data: [13x2 double]
textdata: {'x' 'Curve1'}
colheaders: {'x' 'Curve1'}
>> x.data
ans =
-5.1022 -0.6084
-3.9924 -0.7133
-3.1249 -0.9650
-2.1057 -1.4895
1.0342 3.0420
1.0342 3.0420
1.0342 3.0420
1.0342 3.0420
1.0342 3.0420
1.9070 1.4895
2.9682 1.0490
3.9941 0.7762
5.1033 0.6503
>> x.textdata
ans =
'x' 'Curve1`