matlab学习笔记(基础)

开头第一段

怎么讲,学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&run
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]
    • 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’)
      • 在指定区域的中心的圆盘上绘制图形
  • 表面图
    -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`

猜你喜欢

转载自blog.csdn.net/king_john/article/details/69665263