matlab函数的集锦
2014-02-21 10:56
148 查看
1.textread基本语法是:
[A,B,C,…] = textread(filename,format)
[A,B,C,…] = textread(filename,format,N)
其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。
必须严格遵守用法不可出现data=textread(filename,format,N)的形式
其中括号里面变量的个数必须和format中定义的个数相同。如果每N行相同格式的数据,可采用[A,B,C,…] = textread(filename,format,N)的语法,读取N次。
_______________________________________________________________________________________
注:textread不用先fopen那个文件,适用于格式统一的txt文件的一次性大批量读取。textread读取某个文件后,下次再用textread读取这个文件时,还是会从文件头开始读取。
例如:有分隔符(逗号,分号...)
myfile.txt 中的内容如下:
1, 2,3, 4
5, 6,7, 8
9, 10,11, 12
读取:
>>[data1,data2,data3,data4]=textread('myfile.txt','%n%n%n%n','delimiter', ',')
>> data=[data1 data2 data3 data4]
data =
1 2 3 4
5 6 7 8
9 10 11 12
这里delimiter是指 指出分隔符,读数据的时候会自动跳过分隔符。
至此应该知道Iris.txt怎么读入了吧。
[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s','delimiter',',');
需要注意的是,参数位置要和textread函数用法对应
[A,B,C,…] = textread(filename,format,N)也就是filename,format,N三个参数必须在其他参数前面,所以150才会出现在format后
例如:[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s',150,'delimiter',',');
..............................................................................
2. find
找到非零元素的索引和值
语法:
1. ind = find(X)
2. ind = find(X, k)
3. ind = find(X, k,'first')
4. ind = find(X, k,'last')
5. [row,col] =find(X, ...)
6. [row,col,v] =find(X, ...)
说明:
1. ind =find(X)
找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回到向量ind中。
如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。
如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。
2. ind = find(X, k)
或 3. ind = find(X, k, 'first')
返回第一个非零元素k的索引值。
k必须是一个正数,但是它可以是任何数字数值类型。
4. ind = find(X, k,'last')
返回最后一个非零元素k的索引值。
5. [row,col] =find(X, ...)
返回矩阵X中非零元素的行和列的索引值。
这个语法对于处理稀疏矩阵尤其有用。
如果X是一个N(N>2)维矩阵,col包括列的线性索引。
例如,一个5*7*3的矩阵X,有一个非零元素X(4,2,3),find函数将返回row=4和col=16。也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)=16。
6. [row,col,v] =find(X, ...)
返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。
如果X是一个逻辑表示,则v是一个逻辑矩阵。
输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。
3.
使用struct函数创建结构使用struct函数也可以创建结构,该函数产生或把其他形式的数据转换为结构数组。
struct的使用格式为:
s = sturct('field1',values1,'field2',values2,…);//注意引号
该函数将生成一个具有指定字段名和相应数据的结构数组,其包含的数据values1、valuese2等必须为具有相同维数的数据,数据的存放位置域其他结构位置一一对应的。对于struct的赋值用到了元胞数组。数组values1、values2等可以是元胞数组、标量元胞单元或者单个数值。每个values的数据被赋值给相应的field字段。
当valuesx为元胞数组的时候,生成的结构数组的维数与元胞数组的维数相同。而在数据中不包含元胞的时候,得到的结构数组的维数是1×1的。例如:
s = struct('type',{'big','little'},'color',{'blue','red'},'x',{3,4})s =
1x2 struct array with fields:
type
color
x
得到维数为1×2的结构数组s,包含了type、color和x共3个字段。这是因为在struct函数中{'big','little'}、{'blue','red'}和{3,4}都是1×2的元胞数组,可以看到两个数据成分分别为:
s(1,1)
ans =
type: 'big'
color: 'blue'
x: 3
s(1,2)
ans =
type: 'little'
color: 'red'
x: 4
相应的,如果将struct函数写成下面的形式:
s = struct('type',{'big';'little'},'color',{'blue';'red'},'x',{3;4})
s =
2x1 struct array with fields:
type
color
x
则会得到一个2×1的结构数组。
下面给出利用struct构建结构数组的具体实例。
【例4.3.1-3】利用函数struct,建立温室群的数据库。
(1) struct预建立空结构数组方法之一
a = cell(2,3); % 创建2×3的元胞数组
green_house_1=struct('name',a,'volume',a,'parameter',a(1,2))
green_house_1 =
2x3 struct array with fields:
name
volume
parameter
(2)struct预建空结构数组方法之二
green_house_2=struct('name',a,'volume',[],'parameter',[])
green_house_2 =
2x3 struct array with fields:
name
volume
parameter
(3)struct预建空结构数组方法之三
green_hopuse_3(2,3)=struct('name',[],'volume',[],'parameter',[])
green_hopuse_3 =
2x3 struct array with fields:
name
volume
parameter
(4)struct创建结构数组方法之四
a1={'六号房'};a2={'3200立方米'};
green_house_4(2,3)=struct('name',a1,'volume',a2,'parameter',[]);
T6=[31.2,30.4,31.6,28.7;29.7,31.1,30.9,29.6]; green_house_4(2,3).parameter.temperature=T6;
green_house_4
ans =
2x3 struct array with fields:
name
volume
parameter
4. 3.2 结构数组的操作
MATLAB中专门用于对结构数组的操作的函数并不多,通过 help datatypes获取数据类型列表,可以看到其中的结构数据类型的有关的函数,主要如表4.3.1所示。
表4.3.1
结构数组的操作函数函数名
功能描述 函数名 功能描述deal把输入处理成输出 fieldnames
获取结构的字段名getfield
获取结构中指定字段的值 rmfield
删除结构的字段(不是字段内容)setfield
设置结构数组中指定的字段的值 struct
创建结构数组struct2cell
结构数组转化成元胞数组 isfield
判断是否存在该字段isstruct
判断某变量是否是结构类型
4.
在MATLAB中:
size:获取数组的行数和列数
length:数组长度(即行数或列数中的较大值)
numel:元素总数。
s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。
如果在size函数的输入参数中再添加一项,并用1或2为该项赋值,则size将返回数组的行数或列数。其中r=size(A,1)该语句返回的时数组A的行数,
c=size(A,2) 该语句返回的时数组A的列数。
n=numel(A)该语句返回数组中元素的总数。
n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。n=max(size(A):若A为非空数组,返回A的最大维数;若A为空数组,返回A中最长的非0维数
5. ceil
是向离它最近的大整数圆整
如a = [-1.9,-0.2, 3.4, 5.6, 7, 2.4+3.6i]
圆整后:a=[-1,0,4, 6, 7 ,3+4i]
6. squeeze
B = squeeze(A)
描述:
B
= squeeze(A),B与A有相同的元素,但所有只有一行或一列的维度(a
singleton dimension)被去除掉了。A singletondimension的特征是size(A,dim) = 1。二维阵列不受squeeze影响;
如果 A 是一个row or column矢量或a scalar (1-by-1) value,then B = A.
比如,rand(4,1,3)产生一个均匀分布的阵列,共3页,每页4行1列,经过squeeze后,1列的那个维度就没有了,只剩下4行3列的一个二维阵列。而rand(4,2,3)因为没有1列或1行的维度,所有squeeze后没有变化。
7.
ones产生全1数组,zeros产生全零数组。
ones(a,b)产生a行b列全1数组
ones(a)产生a行a列全1数组
例如:
ones(1,3)产生1行3列全1数组[1 1 1]
ones(2)产生 1 1
11
zeros用法同ones,只是产生的是全0数组
8.matlab中mean的用法
函数功能
求数组的平均数或者均值
使用方法
M = mean(A)
返回沿数组中不同维的元素的平均值。
如果A是一个向量,mean(A)返回A中元素的平均值。
如果A是一个矩阵,mean(A)将其中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。
如果A是一个多元数组,mean(A)将数组中第一个非单一维的值看成一个向量,返回每个向量的平均值。
M = mean(A,dim)
返回A中沿着标量dim指定的维数上的元素的平均值。对于矩阵,mean(A,2)就是包含每一行的平均值的列向量。
A = [1 2 3; 3 3 6; 4 6 8; 4 7 7];
mean(A)
ans =
3.0000 4.5000 6.0000
mean(A,2)
ans =
2.0000
4.0000
6.0000
6.0000
9. MATLAB中的log函数是我们所学的数学中的ln,而非log。而在matlab中,以10为底的对数需要用log10函数,以2为底的对数需要用log2函数。
10
Y = eye(n)
返回n*n单一矩阵,对角线为1
Y = eye(m,n) or eye([m n]) 对角线是1,其他是0。
Y = eye(size(A)) 返回与A统一大小的对角为1的矩阵
[A,B,C,…] = textread(filename,format)
[A,B,C,…] = textread(filename,format,N)
其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。
必须严格遵守用法不可出现data=textread(filename,format,N)的形式
其中括号里面变量的个数必须和format中定义的个数相同。如果每N行相同格式的数据,可采用[A,B,C,…] = textread(filename,format,N)的语法,读取N次。
_______________________________________________________________________________________
注:textread不用先fopen那个文件,适用于格式统一的txt文件的一次性大批量读取。textread读取某个文件后,下次再用textread读取这个文件时,还是会从文件头开始读取。
例如:有分隔符(逗号,分号...)
myfile.txt 中的内容如下:
1, 2,3, 4
5, 6,7, 8
9, 10,11, 12
读取:
>>[data1,data2,data3,data4]=textread('myfile.txt','%n%n%n%n','delimiter', ',')
>> data=[data1 data2 data3 data4]
data =
1 2 3 4
5 6 7 8
9 10 11 12
这里delimiter是指 指出分隔符,读数据的时候会自动跳过分隔符。
至此应该知道Iris.txt怎么读入了吧。
[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s','delimiter',',');
需要注意的是,参数位置要和textread函数用法对应
[A,B,C,…] = textread(filename,format,N)也就是filename,format,N三个参数必须在其他参数前面,所以150才会出现在format后
例如:[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s',150,'delimiter',',');
..............................................................................
2. find
找到非零元素的索引和值
语法:
1. ind = find(X)
2. ind = find(X, k)
3. ind = find(X, k,'first')
4. ind = find(X, k,'last')
5. [row,col] =find(X, ...)
6. [row,col,v] =find(X, ...)
说明:
1. ind =find(X)
找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回到向量ind中。
如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。
如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。
2. ind = find(X, k)
或 3. ind = find(X, k, 'first')
返回第一个非零元素k的索引值。
k必须是一个正数,但是它可以是任何数字数值类型。
4. ind = find(X, k,'last')
返回最后一个非零元素k的索引值。
5. [row,col] =find(X, ...)
返回矩阵X中非零元素的行和列的索引值。
这个语法对于处理稀疏矩阵尤其有用。
如果X是一个N(N>2)维矩阵,col包括列的线性索引。
例如,一个5*7*3的矩阵X,有一个非零元素X(4,2,3),find函数将返回row=4和col=16。也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)=16。
6. [row,col,v] =find(X, ...)
返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。
如果X是一个逻辑表示,则v是一个逻辑矩阵。
输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。
3.
使用struct函数创建结构使用struct函数也可以创建结构,该函数产生或把其他形式的数据转换为结构数组。
struct的使用格式为:
s = sturct('field1',values1,'field2',values2,…);//注意引号
该函数将生成一个具有指定字段名和相应数据的结构数组,其包含的数据values1、valuese2等必须为具有相同维数的数据,数据的存放位置域其他结构位置一一对应的。对于struct的赋值用到了元胞数组。数组values1、values2等可以是元胞数组、标量元胞单元或者单个数值。每个values的数据被赋值给相应的field字段。
当valuesx为元胞数组的时候,生成的结构数组的维数与元胞数组的维数相同。而在数据中不包含元胞的时候,得到的结构数组的维数是1×1的。例如:
s = struct('type',{'big','little'},'color',{'blue','red'},'x',{3,4})s =
1x2 struct array with fields:
type
color
x
得到维数为1×2的结构数组s,包含了type、color和x共3个字段。这是因为在struct函数中{'big','little'}、{'blue','red'}和{3,4}都是1×2的元胞数组,可以看到两个数据成分分别为:
s(1,1)
ans =
type: 'big'
color: 'blue'
x: 3
s(1,2)
ans =
type: 'little'
color: 'red'
x: 4
相应的,如果将struct函数写成下面的形式:
s = struct('type',{'big';'little'},'color',{'blue';'red'},'x',{3;4})
s =
2x1 struct array with fields:
type
color
x
则会得到一个2×1的结构数组。
下面给出利用struct构建结构数组的具体实例。
【例4.3.1-3】利用函数struct,建立温室群的数据库。
(1) struct预建立空结构数组方法之一
a = cell(2,3); % 创建2×3的元胞数组
green_house_1=struct('name',a,'volume',a,'parameter',a(1,2))
green_house_1 =
2x3 struct array with fields:
name
volume
parameter
(2)struct预建空结构数组方法之二
green_house_2=struct('name',a,'volume',[],'parameter',[])
green_house_2 =
2x3 struct array with fields:
name
volume
parameter
(3)struct预建空结构数组方法之三
green_hopuse_3(2,3)=struct('name',[],'volume',[],'parameter',[])
green_hopuse_3 =
2x3 struct array with fields:
name
volume
parameter
(4)struct创建结构数组方法之四
a1={'六号房'};a2={'3200立方米'};
green_house_4(2,3)=struct('name',a1,'volume',a2,'parameter',[]);
T6=[31.2,30.4,31.6,28.7;29.7,31.1,30.9,29.6]; green_house_4(2,3).parameter.temperature=T6;
green_house_4
ans =
2x3 struct array with fields:
name
volume
parameter
4. 3.2 结构数组的操作
MATLAB中专门用于对结构数组的操作的函数并不多,通过 help datatypes获取数据类型列表,可以看到其中的结构数据类型的有关的函数,主要如表4.3.1所示。
表4.3.1
结构数组的操作函数函数名
功能描述 函数名 功能描述deal把输入处理成输出 fieldnames
获取结构的字段名getfield
获取结构中指定字段的值 rmfield
删除结构的字段(不是字段内容)setfield
设置结构数组中指定的字段的值 struct
创建结构数组struct2cell
结构数组转化成元胞数组 isfield
判断是否存在该字段isstruct
判断某变量是否是结构类型
4.
在MATLAB中:
size:获取数组的行数和列数
length:数组长度(即行数或列数中的较大值)
numel:元素总数。
s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。
如果在size函数的输入参数中再添加一项,并用1或2为该项赋值,则size将返回数组的行数或列数。其中r=size(A,1)该语句返回的时数组A的行数,
c=size(A,2) 该语句返回的时数组A的列数。
n=numel(A)该语句返回数组中元素的总数。
n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。n=max(size(A):若A为非空数组,返回A的最大维数;若A为空数组,返回A中最长的非0维数
5. ceil
是向离它最近的大整数圆整
如a = [-1.9,-0.2, 3.4, 5.6, 7, 2.4+3.6i]
圆整后:a=[-1,0,4, 6, 7 ,3+4i]
6. squeeze
除去size为1的维度
B = squeeze(A)描述:
B
= squeeze(A),B与A有相同的元素,但所有只有一行或一列的维度(a
singleton dimension)被去除掉了。A singletondimension的特征是size(A,dim) = 1。二维阵列不受squeeze影响;
如果 A 是一个row or column矢量或a scalar (1-by-1) value,then B = A.
比如,rand(4,1,3)产生一个均匀分布的阵列,共3页,每页4行1列,经过squeeze后,1列的那个维度就没有了,只剩下4行3列的一个二维阵列。而rand(4,2,3)因为没有1列或1行的维度,所有squeeze后没有变化。
7.
ones产生全1数组,zeros产生全零数组。
ones(a,b)产生a行b列全1数组
ones(a)产生a行a列全1数组
例如:
ones(1,3)产生1行3列全1数组[1 1 1]
ones(2)产生 1 1
11
zeros用法同ones,只是产生的是全0数组
8.matlab中mean的用法
函数功能
求数组的平均数或者均值
使用方法
M = mean(A)
返回沿数组中不同维的元素的平均值。
如果A是一个向量,mean(A)返回A中元素的平均值。
如果A是一个矩阵,mean(A)将其中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。
如果A是一个多元数组,mean(A)将数组中第一个非单一维的值看成一个向量,返回每个向量的平均值。
M = mean(A,dim)
返回A中沿着标量dim指定的维数上的元素的平均值。对于矩阵,mean(A,2)就是包含每一行的平均值的列向量。
A = [1 2 3; 3 3 6; 4 6 8; 4 7 7];
mean(A)
ans =
3.0000 4.5000 6.0000
mean(A,2)
ans =
2.0000
4.0000
6.0000
6.0000
9. MATLAB中的log函数是我们所学的数学中的ln,而非log。而在matlab中,以10为底的对数需要用log10函数,以2为底的对数需要用log2函数。
10
Y = eye(n)
返回n*n单一矩阵,对角线为1
Y = eye(m,n) or eye([m n]) 对角线是1,其他是0。
Y = eye(size(A)) 返回与A统一大小的对角为1的矩阵
相关文章推荐
- 50条网页制作小技巧集锦
- 服务器做raid1问题集锦
- 好雨云帮近期问答集锦(1.16~2.5)
- CSDN论坛面试经验和面试题集锦
- android面试题集锦2 广播机制
- 【集锦】2016年阿里云在线直播精华合集
- 开始 运行 命令 集锦
- android面试集锦7
- 前端不为人知的一面——前端冷知识集锦
- SQL语句集锦
- Hadoop 常见问题集锦
- Elasticsearch5.0 安装问题集锦
- ASP开发技巧集锦二
- delphi关于文件操作集锦
- 安卓开发问题集锦二
- js验证常用正则表达式集锦
- 【Apache Hadoop系列】hadoop伪分布式配置问题集锦
- 注册码集锦----待更
- 易混淆单词集锦
- 【Apache Nutch系列】Nutch2.0配置安装异常集锦