matlab中的函数实在是太多了,经常记住这个忘记那个……现将实验中碰到的一些函数及其用法做下记录,等收集差不多的时候再做整理。
1.unidrnd
语法格式:R = unidrnd(N)
产生从1到N所指定的最大数之间的离散均匀随机整数。其中N可以是一个向量、矩阵、多维数组(当然也可以是一个数,即1乘以1的矩阵),但N中所有元素都必须是正整数。这种调用方式将产生一个和N具有相同尺寸(行、列、维数)的矩阵R。
R = unidrnd(N,v)
这种调用格式中v是一个行向量,如果v是一个1乘以2的向量,则v中的两个元素分别指定了生成的矩阵R的行数(由v(1)指定)和列数(由v(2)指定)。如果v是一个1乘以n的矩阵,则R是一个n维数组。
R = unidrnd(N,m,n)
这里m和n分别指定生成的矩阵R的行数和列数。
程序示例
>> a =unidrnd(1)
a = 1
>> a =unidrnd(2)
a = 1
>> a =unidrnd(2)
a = 2
>> a =unidrnd(0)
a = NaN
>> a =unidrnd([1 2 3; 4 5 0])
a =
1 2 2
2 3 NaN
>> a =unidrnd(100, 2, 3)
a =
11 99 19
65 11 1
2.reshape
reshape函数指把制定的矩阵在不改变元素个数的条件下改变形状。
例如,行向量:
a=[1 2 3 4 5 6]
执行reshape:
b=reshape(a,3,2)
结果:
b=
1 4
2 5
3 6
若a=[1 2 3;4 5 6; 7 8 9]
如果想得到b=[1 2 3 4 5 6 7 8 9]
将a转置一下然后使用reshape b=reshape(a',1,9)即可。
3.randi
randi是matlab中能产生均匀分布的伪随机整数的新函数。
用法有:
randi(imax)
r =randi(imax,n)
randi(imax,m,n)
randi(imax,[m,n])
randi(imax,m,n,p,...)
randi(imax,[m,n,p,...])
randi(imax,size(A))
r =randi([imin,imax],...)
r = randi(...,classname)
例如:
randi([01],1,10)
生成1*10的0、1随机的矩阵:
ans =
1 1 1 0 0 1 0 10 0
4.fprintf
fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:
数据的格式化输出:fprintf(fid, format, variables)
按指定的格式将变量的值输出到屏幕或指定文件
fid为文件句柄,若缺省,则输出到屏幕
1for standard output (the screen) or 2 for standard error. If FID is omitted,output goes to the screen.
format用来指定数据输出时采用的格式
%d整数
%e实数:科学计算法形式
%f实数:小数形式
%g由系统自动选取上述两种格式之一
%s输出字符串
fprintf(fid,format,A)
说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
例6.9创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
>> a='string';
>> fid=fopen('d:\char1.txt','w');
>> fprintf(fid,'%s',a);
>> fclose(fid);
>> fid1=fopen('d:\char1.txt','rt');
>> fid1=fopen('d:\char1.txt','rt');
>> b=fscanf(fid1,'%s')
b =
string
matlab读txt文件
fid=fopen('fx.txt','r');
%得到文件号
[f,count]=fscanf(fid,'%f %f',[12,90]);
%把文件号1的数据读到f中。其中f是[12 90]的矩阵
%这里'%f %f'表示读取数据的形势,他是按原始数据型读出
fclose(fid);
%关闭文件
另外有的txt文件还可以用load来打开
其语句为
f=load('fx.txt)
5.fscanf
matlab中函数fscanf在文件读取方面的实例如下:
从文件中有格式地读数据 fscanf
语法1:[a,count]=fscanf(fid,format,size)
根据指定的格式从fid文件按照格式format读出数据并按size的格式放入内存。
a :读出的数据放入内存的变量名
count :返回值。0:失败、n>0:成功,n是读出数据个数。
fid :文件号
size :a的数据的格式
N : 列向量
inf : 读出文件全部数据
[M,N] : 读出数据以M*N的格式放入变量名a内
format:读出数据的格式
format是字符形式,与C语言基本相同。字符形式中有“%”与字符集(d,i,o,u,x,e,f,g,s,c,…)搭配构成。
如: %s:单字符读
%c:读space字符
例:s=fscanf(fid,'%s') 返回一个字符。
a=fscanf(fid,']') 返回一个五位十进制整数。
size是一个[m n]的向量,m为行,n为列(注意,这里读取的顺序是按列优先排列的,不明白的话可以看下面的例子),若n取inf表示读到文件末尾。
fid为fopen打开文件的返回值,
format是格式化参数(像printf、scanf)。
举个小例子:
内容: 13, 1, 3.4
3, 2.1, 23
1, 12, 2
4, 5.4, 6
现在为了读取001中的数据存在一个数组里,可以用如下方法
fid=fopen('001.txt');
data=fscanf(fid,'%f,%f,%f',[3,inf]);%这里得用单引号
fclose(fid);
这时data中的数据如下:
13 3 1 4
1 2.1 12 5.4
3.4 23 2 6