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)我个人觉得用第一种方式较好。因为有些时候,特别是fx.txt 的一行种有多个数据时用load就比较麻烦了。
- 另外,还可以使用a=importdata('data.txt').
如何用matlab读取txt文件,文件开始几行是汉字,后面的数据,如何把数据读出来,哪位高手赐教一下
fd=fopen('name.txt','r');
var=fread(fd);
var=native2unicode(var);
disp(var);%这个可以读取全部;楼主自己可以计算一下从哪个开始时数据有效,然后就从哪里开始取值,如果汉子的字节是不确定的话~~我就不会了。
二维数组的创建
直接输入法
1 整个输入数组必须以方括号“[ ]”为其首尾;
2 数组的行与行之间必须用分号“;”或回车键Enter隔离;
3 数组元素必须由逗号“,”或空格分隔。ones(m,n),
元素全为1diag (m,n)
对角阵eye(m,n)
单位阵zeros(m,n)
元素全为0 size(C) %函数size给出矩阵C的行和列
A=diag(C) % 取矩阵C的对角元素,此时它是一个列向量“逻辑1”标识
A=zeros(2,5) % 预生成一个(2×5)全零数组
A(:)=-4:5 % 运用“全元素”赋值法获得
AL=abs(A)>3 % 产生与A同维的“0-1”逻辑值数组
islogical(L) % 判断L是否是逻辑值数组。输出若为1,则是X=A(L) % 把L中逻辑值1对应的A元素取出 %所谓“逻辑1”标识法是:通过与A同样大小的逻辑值数组L中“逻辑值1”所在的位置,指出A中元素的位置。
A(r,c) 它由A的“r指定行”和“c指定列”上的元素组成
A(r,:) 它由A的“r指定行”和“全部列”上的元素组成
A(:,c) 它由A的“全部行”和“c指定列”上的元素组成
A(😃 “单下标全元素”寻访。它由A的各列按自左到右的次序, 首尾相接而生成“一维长列”数组
A(s) “单下标”寻访。生成“s指定的”一维数组。s若是“行数组”(或“列数组”),则A(s)就是长度相同的“行数组”(或“列数组”)
A(L) “逻辑1”寻访,生成“一维”列数组:由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素;按“单下标”次序排成长列组成
A(r,c)=Sa 以“双下标”方式,对子数组A(r,c)进行赋值:Sa的“行宽、列长”必须与A(r,c)的“行宽、列长”相同
A(:)=D(😃 全元素赋值方式。结果:保持A的“行宽、列长”不变。条件:A、D两个数组的总元素相等,但“行宽、列长”不一定相同A(s)=Sa按“单下标”方式,对A的部分元素重新赋值。结果:保持A的“行宽、列长”不变。条件:s单下标数组的长度必须与“一维数组”Sa的长度相等,但是s、Sa不一定同是“行数组”或“列数组”
A(:)=1:8s=[2 3 5]Sa=[10 20 30]'A(s)=Sa
数学运算
acos 反余弦 asinh 反双曲正弦 csch 双曲余割acosh 反双曲余弦 atan 反正切 sec 正割acot 反余切 atan2 四象限反正切 sech 双曲正割acoth 反双曲余切 atanh 反双曲正切 sin 正弦acsc 反余割 cos 余弦 sinh 双曲正弦acsh 反双曲余割 cosh 双曲余弦 tan 正切asec 反正割 cot 余切 tanh 双曲正切asech 反双曲正割 coth 双曲余切 asin 反正弦csc 余割exp 指数 log10 常用对数pow2 2的幂 log 自然对数log2 以2为底的对数 sqrt 平方根abs 模,或绝对值 conj 复数共轭real 复数实部 angle 相角(弧度)imag 复数虚部ceil 向+∞圆整函数 rem 求余数fix 向0圆整函数 round 向圆整函数
floor 向-∞圆整函数
sign 符号函数
mod 模余求余
cart2sphl 直角坐标变为球坐标
pol2cart 柱(或极)坐标变为直角坐标
cartpol 直角坐标变为柱(或极)坐标
sph2cart 球坐标变为直角坐标
[X,Y] = POL2CART(TH,R) % The arrays TH and R must the same size (or either canbe scalar).TH must be in radians.
[X,Y,Z] = POL2CART(TH,R,Z)函数meshgrid。设a=[a1 a2 a3 a4],b=[b1 b2 b3 b4],则[A,B]=meshgrid(a,b)可生成两个(3×4)的矩阵A及B
.数量积: 求数量积的命令是: dot(a, b, dim) 此函数表示求向量a与b在维数为dim的点乘值。如果dim缺省,则返回两个同维向量a与b的数量积。
向量积: 求向量积的命令是: cross (a, b, dim)此函数表示求向量a与b在维数为dim的叉乘值。如果dim缺省,则返回两个同维向量a与b的向量积。注意向量a与b的维数不能大于三维。
混合积: 我们可以由前面的两个命令来求三个向量的混合积:dot (a, cross (b, c))
sum函数: sum(A)当A是向量时,sum函数将计算向量中所有元素之和,并返回此值。当A是向矩阵时,sum函数将矩阵中的元素按列相加,并返回一个长度等于矩阵A的列数的行向量。
dim=1为列向量 dim=2 为行向量
数组/矩阵运算
cat: 把“大小”相同的若干数组,沿“指定维”方向,串接成高维数组
diag: 提取对角元素,或生成对角阵
flipud: 以数组“水平中线”为对称轴,交换上下对称位置上的数组元素
fliplr: 以数组“垂直中线”为对称轴,交换左右对称位置上的数组元素
kron: 按Kronecker乘法规则产生“积”数组repmat: 按指定的“行数、列数”铺放模块数组,以形成更大的数组
reshape: 在总元素数不变的前提下,改变数组的“行数、列数”A=reshape(1:9,3,3)逻辑函数的运用示例:randn('state',1),R=randn(3,6) % 创建正态随机阵L=abs(R)<0.5|abs(R)>1.5 % 不等式条件运算,结果给出逻辑数组R(L)=0 % “逻辑1”对应的元素赋0值s=(find(R0))' % 利用find获得符合关系等式条件的元素“单下标”R(s)=111 % 利用“单下标”定位赋值[ii,jj]=find(R111) % 利用find获得符合关系等式条件的元素“双下标”高维数组
cat(3,ones(2,3),ones(2,3)2,ones(2,3)3)cat指令第一个输入宗量填写的数字“表示串接方向的维号”。repmat(ones(2,3),[1,1,3])repmat指令的第一个输入宗量是“模块数组”。第二个输入宗量指定“各维方向”铺放“模块数组”的数目。指令中[1,1,3]表示:在“行维方向”和“列维方向”各铺一块,而在“页维方向”铺3块。
reshape(1:12,2,2,3)1 reshape的第一个输入宗量是“待重组”的数组;第二、三、四输入量是要生成的数组的“行数、列数、页数”。2 “将生成数组的总元素数”必须与“待重组”数组的总元素相等。3 重组时,元素放置遵循“单下标”编号规则:第一页第一列下接该页的第二列,下面再接第三列,依次类推。第一页的最后列接着第二页第一列,如此进行,直至结束。
NaN的性质:1 NaN参与运算所得的结果也是NaN,即具有传递性。2 非数没有“大小”概念,因此不能比较两个非数的大小。
isnan(R) %判断一个变量是否是NaN“空”数组which,who,whos,以及变量浏览器都可以验证它的存在。
判断一个数组是否“空”数组的指令:isempty。
关系、逻辑函数all(A) 当向量A的元素全非0时,结果才是1;否则结果是0
isequal(A,B) A,B对应元素相等时,相应元素位置取1,否则取0
any(A) 只要向量A中有非0元素,结果就是1;否则结果是0
xor(A,B) A,B对应元素同为0,或非0时,相应位置元素取0,否则取1
isfinite(x) 对应x中有限大小元素的位置取1,其余均为0
isprime(x) 对应x中质数元素的位置取1,其余均为0
isinf(x) 对应x中无穷大小元素的位置取1,其余均为0
isreal(x) 对应x中实数元素的位置取1,其余均为0
isletter(x) 对应x中英文字母的元素的位置取1,其余均为0
isspace(x) 对应x中空格的元素的位置取1,其余均为0
矩阵的转置的运算符是“'”。
B=A' %b是A的转置。如果矩阵中有复数元素,则转置后得到的是它的复共轭。
A.' % 非共轭转置。相当于conj(A')
permute %广义非共轭转置
squeeze %撤消长度为1的“孤维”,使数组降维
rand %产生均匀分布随机数组
exp(A) 以自然数e为底,分别以A的元素为指数,求幂
sqrt(A) 对A的各元素求平方根
log(A) 对A的各元素求对数
expm(A) A的矩阵指数函数
logn(A) A的矩阵对数函数
sqrtm(A) A的矩阵平方根函数
A#B A、B阵对应元素间的关系运算。#代表关系运算符
[email=A@B]A@B[/email] A、B阵对应元素间的关系运算。@代表逻辑运算符
求方阵的行列式的值及逆的函数是:det(A)和inv(A)
求方阵的特征值及特征向量的函数是:eig(A)在调用格式[V,D]=eig(A)中,A的特征向量以列向量的形式存放在V中,D是对角元,它表示对应的特征值。[V,D]=eig(A)均匀采样生成一维“行”数组 : x=linspace(a,b,n)定数对数采样法:
x=logspace( a, b, n ) 即: x=[10^a, 10^a+s 10^a+2*s … 10^b ] (其中s = (b–a)/(n–1))
左右除
矩阵除法的运算符有两种:“\”和“/”,它们分别表示左除和右除。
AB=inv(A)B
B/A=Binv(A)所以只有当矩阵A可逆时,方可实现此运算。对于矩阵算术右除相当于求xA=B的解;而算术左除相当于Ax=B的解。a,b为数值时a/b=a除b ab=b除a