Number of function arguments
Find unique elements of vector
b = unique(A)
b = unique(A, 'rows')
[b, m, n] = unique(...)
[b, m, n] = unique(..., occurrence)
A = [1 1 5 6 2 3 3 9 8 6 2 4]
A =
1 1 5 6 2 3 3 9 8 6 2 4
Get a sorted vector of unique elements of A. Also get indices of the first elements in A that make up vector b, and the first elements in b that make up vector A:
[b1, m1, n1] = unique(A, 'first')
b1 =
1 2 3 4 5 6 8 9
m1 =
1 5 6 12 3 4 9 8
n1 =
1 1 5 6 2 3 3 8 7 6 2 4
Determine whether all array elements are nonzero or true
接着上一个例子,
Verify that b1 = A(m1) and A = b1(n1):
all(b1 == A(m1)) && all(A == b1(n1))
ans =
1
Array elements that are members of set
tf = ismember(A, S)
tf = ismember(A, S, 'rows')
[tf, loc] = ismember(A, S, ...) returns an array loc containing the highest index in S for each element in A that is a member of S.
set = [5 2 4 2 8 10 12 2 16 18 20 3];
a = (1:5)'
a =
1
2
3
4
5
[tf, index] = ismember(a, set)
tf =
0
1
1
1
1
index =
0
8
12
3
1
tf = isfield(S, 'fieldname') examines structure S to see if it includes the field specified by the quoted string 'fieldname'. Output tf is set to logical 1 (true) if S contains the field, or logical 0 (false) if not. If S is not a structure array, isfield returns false.
tf = isfield(S, C) examines structure S for multiple fieldnames as specified in cell array of strings C, and returns an array of logical values to indicate which of these fields are part of the structure. If structure S contains the field specified in C{m,n}, isfield returns a logical 1 (true) in tf(m,n).
All breakpoints remain in effect, unless your file contains (and MATLAB® has processed) one or more of the following commands:clear all,clear function,clear classes.
clear all removes debugging breakpoints in code files and reinitializes persistent variables.
使用matlab进行调试时,在函数开头加了一句" clear all;",然后在下面添加了几句断点,结果就不能进入断点状态了。"clear;"并不能清除断点。
Use genpath in conjunction with addpath to add a folder and its subfolders to the search path. Addmyfiles and its subfolders to the search path:
addpath(genpath('c:/matlab/myfiles'))
load函数用于导入.mat文件到一个结构struct里,importdata函数可以将文件直接导入,也可以导入.mat文件直接到变量里。
例如:
1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127;
2、浮点:(single;double)
浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。
3、逻辑:(logical)
Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0:
A = rand(5);
A(A>0.5)=0;
4、字符:(char)
Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’ 实际上是一个1行9列向量。5、日期和时间
Matlab提供三种日期格式:日期字符串如’1996-10-02’,日期序列数如729300(0000年1月1日为1)以及日期向量如 1996 10 2 0 0 0,依次为年月日时分秒。
常用的日期操作函数
datestr(d,f) 将日期数字转换为字符串
datenum(str,f) 将字符串转换为日期数字
datevec(str) 日期字符串转换向量
weekday(d) 计算星期数
eomday(yr,mth) 计算指定月份最后一天
calendar(str) 返回日历矩阵
clock 当前日期和时间的日期向量
date 当前日期字符串
now 当前日期和时间的序列数
6、结构
结构是包含已命名“数据容器”或字段的数组。结构中的字段可以包含任何数据。
7、结构数组
下面的赋值命令产生一个名为patient的结构数组,该数组包含三个字段:
patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79 75 73; 180 178 177.5; 220 210 205];
在命令区内输入patient可以查看结构信息:
name: 'John Doe'
billing: 127
test: [3x3 double]
继续赋值可扩展该结构数组:
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];
赋值后结构数组变为[1 2]。
8、单元格数组:(cell)
单元格数组提供了不同类型数据的存储机制,可以储存任意类型和任意维度的数组。
访问单元格数组的规则和其他数组相同,区别在于需要使用花括号{}访问,例如A{2,5}访问单元格数组A中的第2行第5列单元格。
9、函数句柄
函数句柄是用于间接调用一个函数的Matlab值或数据类型。在调用其它函数时可以传递函数句柄,也可在数据结构中保存函数句柄备用。通过命令形式 fhandle = @functionname 可以创建函数句柄。例如 ,或匿名函数sqr = @(x) x.^2;。使用句柄调用函数的形式是 fhandle(arg1, arg2, ..., argn) 或 fhandle()(无参数)。如:
trigFun(1)。例:
function x = plotFHandle(fhandle, data)
plot(data, fhandle(data))
plotFHandle(@sin, -pi:0.01:pi)
数据类型转换如C语言中的强制类型转换相似e.g.:
y=9;
z=double(y);
matlab中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此 I2=im2double(I1)即为把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*' is not defined for values of class 'uint8'。
图像数据类型转换函数
默认情况下,matlab将图像中的数据存储为 double型,即64位浮点数;matlab还支持 无符号整型(uint8和uint16);uint型的优势在于节省空间, 涉及运算时要转换成double型。 im2double():将图像数组转换成double精度类型
我们读取和写入二进制文件的时候,首先需要打开和关闭文件,好比一个指针一样,只有打开了这个文件,才可以读取数据,打开和关闭函数分别是 fopen函数和fclose函数。
% 得到文件filename的指针 file_id=fopen(filename,'rb'); % 关闭文件指针 fclose(file_id);
1)写二进制文件
fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:
COUNT=fwrite(fid,A,precision)
说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。
例: 将一个二进制矩阵存入磁盘文件中。
>> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件 fid = 3 %其值大于0,表示打开成功 >> fwrite(fid,a,'double') ans = 9 %表示写入了9个数据 >> fclose(fid) ans = 0 %表示关闭成功
bargin.Time(i)=fread(file_id,1,'int64'); bargin.MilliSecond(i)=fread(file_id,1,'uint32'); bargin.Symbol(i,8)=fread(file_id,1,'schar'); bargin.Bid(i,:)=fread(file_id,10,'float64');分别表示读取64位整数,32位无符号整数,字符,和64位浮点数,所以这里面一定要弄清楚,就是一定要对应上要读的数据的类型。
1)读文本文件
fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:
[A,COUNT]=fscanf(fid,format,size)
说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size为可选项,决定矩阵A中数据的排列形式,它可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。
另外有的txt文件还可以用load来打开
其语句为
f=load('fx.txt)
2)写文本文件
fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:
fprintf(fid,format,A)
说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
例: 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
>> a='string'; % 写 >> fid=fopen('d:\char1.txt','a+'); % open or create file and append data to end of file >> fprintf(fid,'%s',a); >> fclose(fid); % 读 >> fid1=fopen('d:\char1.txt','rt'); >> b=fscanf(fid1,'%s') b = string
参考自:
读取二进制文件, http://www.matlabsky.com/thread-14396-1-1.html
MATLAB文件操作——二进制文件的读写, http://bbs.21ic.com/blog-592616-63312.html
matlab对文件目录路径的操作(转) http://blog.sciencenet.cn/blog-702148-569011.html
Matlab写文本txt换行 http://blog.163.com/wanglei2146073@126/blog/static/9068960720134307319575/