从python转向matlab,记几个不一样的地方。
大不同
类属性定义不同:python类可以在定义属性的时候调用前文的变量、调用函数;matlab定义类属性不能调用前文变量及类函数。
构造函数不同:python类可以在初始化的时候自动调用构造函数;matlab的类需要专门的初始化函数,且必须明确地调用。
p = Model_Params; p = p.init()
类变量在函数中被改变,结果不同:matlab类初始化为对象后,如果在函数内部改变对象的属性值,没有返回对象,则对象的属性不会被实质性改变。
只写p.init(),输出的参数仍然为空;赋值之后,才会有真实值。
ones() 初始化方面容易犯错:Python中,初始化一个一维向量用np.ones(N)可以实现;matlab中,ones(N)是一个N维的方阵,一维向量用ones(1,N)
size()判断时候容易犯错:假设array是包含N个元素的一维向量,Python中的size(array)会得到N,而matlab中size(array) 会得到(1, N)。
返回值为两个的时候:python可直接写x, y = func();Matlab中一定要用方括号括起来,[x, y] = func()。
打印
MATLAB输出变量方法很多,主要包括以下几类。
(1)语句后面不加分号“;”,这是直接输出数值的比较简单的方法。
(2)disp(a)直接在命令窗口显示a变量,这种方法输出和第一种差不多。
(3)fprintf(‘a=%f’,a)格式控制输出,输出’a='然后再显示输出的变量。
(4)save(dir+name,‘变量名’)保存输出到某个文件中去,可以将数值保存。
print函数用于将作出的函数图像保存成指定格式的图片,紧跟在函数图像后面。
fprintf函数可以将数据按指定格式写入到文本文件中。fprintf(fid, format, data)中的fid表示由fopen函数打开的文件句柄,如果fid省略,则直接输出在屏幕上,format指定输出格式,data是要输出的数据。
fscanf可以从文件中读取数据, [a,count]=fscanf(fid, format, size), 即从fid 文件中按照格式format读出数据并按size的格式放入内存变量a中。
注释
多行注释: 选中要注释的若干语句, 编辑器菜单Text-<Comment, 或者快捷键Ctrl+R
取消注释: 选中要取消注释的语句, 编辑器菜单Text-<Uncomment, 或者快捷键Ctrl+T
数据类型
整型有int8、int16、int32等;默认类型是双精度浮点型。
Inf、-Inf表示正负无穷。NaN表示非数值。
查看数据类型:class(aaa)
当前工作空间中所有变量:whos
存储和读取
存储一个矩阵A:save A
读取一个矩阵A:A = load("A.mat")
读取矩阵之后,是结构体的形式:
>> A
ans =
包含以下字段的 struct:
A: [100×100 double]
N: 100
ans: 400
fp1: [1×1 Line]
i: 100
j: 100
m: 2
p: 0.1000
t: [1×101 double]
x: [1×101 double]
y: [1×101 double]
调取矩阵内容用A.A
取整函数
floor向下取整、ceil向上取整。round()向最近的数字取整,数字为0.5则取绝对值大的方向。