02变量类型与档案存取
who:展示工作区中的变量
whos:展示工作区中的变量并且展示它们的大小,字节,类型和属性
Matlab中()用来取下标或者进行切片处理
Matlab Data Types:
判断数据类型函数:
- isinteger()
- islogical()
- isnan()
- isnumeric()
- isprime()
- iscell()
- ischar()
- isempty()
- isequal()
- isfloat()
- isglobal()
- ishandle()
- isinf()
1.logical
str = 'aardvark';
#字符串进行比较:
str2 = 'aardvark';
strcmp(str1,str2)
ans : 1 #(logical类型) 用函数进行比较
for i=1:length(str1) #通过for循环自定义一个函数进行比较
str1(i)====str2(i)
end
#比较单个字符:
'a' == str
ans : 1 1 0 0 0 1 0 0 # 进行逻辑运算
str(str=='a') = 'Z'
str : 'ZZrdvZrk' #进行逻辑替换
2.char ()
s1 = ‘Example’
s2 = ‘String’
s3 = [s1,s2] s3 : ‘ExampleStirng’
s4 = [s1;s2] s4 : Error:数组维度不同,必须长度相同
s5 = [s1;s1] s5 : ‘Example’
‘Example’
3.numeric
int/uint8/16/32/64,single,double
加括号成为函数,例如 B=int8(A),使其转换
4.cell {}
变量A 作为 cell Array(单元数组;单元阵列)时
声明方法1:
A(1,1) = { [1 4 3;0 5 8;7 2 9] };
A(1,2) = {'Anne Smith'};
A(2,1) = {3+7i};
A(2,2) = {-pi:pi:pi};
声明方法2:
A{1,1} = [1 4 3;0 5 8;7 2 9] ;
A{1,2} = 'Anne Smith';
A{2,1} = 3+7i;
A{2,2} = -pi:pi:pi;
C = A{1,1}
# C =
1 4 3
0 5 8
7 2 9
D = A(1,1)
# D =
1×1 cell 数组
{3×3 double}
在这里 A(1,1)或 被视作指针 指向里面的内容地址
A{1,1}返回 cell array的1,1位置上的内容
-
magic()
-
num2cell() 矩阵是num类型的 矩阵->单元数组
-
mat2cell(矩阵名,[1 1 1],3) 矩阵-> [1,2,3] 三个单元数组
[4,5,6]
[7,8,9]
Multidimensional Array 多维度数组:
A{x,y,z} = 赋值麻烦
cat(方向,矩阵1,矩阵2) 函数: /方向:row 1 column 2 layer 3
reshape(矩阵,行数,列数) 函数: 重置原来矩阵的行列数
5.struct () .
.操作符:与C语言作用相同,结构体.属性,用来声明或取值
student.name = 'John Doe'; student.id = 'jdo2@sfu.ca'; student.number = 301073268; student.grade = [100,75,74;... 95,91,85.5;... 100,98,72]; student student = 包含以下字段的 struct: name: 'John Doe' id: 'jdo2@sfu.ca' number: 301073268 grade: [3×3 double]
第二个同样类的成员声明方式:
>> student(2).name = ‘John Doe’;
此时便形成了 student类的数组array
student =
包含以下字段的 1×2 struct 数组:
name
id
number
grade
>> student(2,1).name = 'alfonso sav';
此时便形成了 student类的矩阵vector
fieldnames(student) 返回该结构的所有成员
rmfield(student,‘id’) 删除结构的某个成员
嵌套结构:
用这种方法声明结构时,()内为(成员,值,成员,值···)
A = struct(‘data’,[3 4 7;8 0 1],‘nest’,…
struct(‘testnum’,‘Test 1’,…
‘xdata’,[4 2 8],‘ydata’,[7 1 6]));
function-handle(@) 函数句柄/匿名函数
于文档中存取变量
1.MATLAB fromatted data (.mat)
save load delete
是命令, 格式: save/load 文件名 -ascii
也是函数,save(‘文件名’) / load(‘文件名’,’-ascii’)
-ascii 可读文档,不加则为乱码
2.Text
save load
3.Excel spreadsheet (.xls,.xlsx)
xlswrite xlsread 只会读数字部分
score = xlsread(‘文件名’,‘B2:D4’)
A = mean(score’)’ 利用mean函数的求列和 '的矩阵转置求
每一行的平均数
xlswrite(‘文件名’,变量名,第几个sheet,‘单元格范围’)
xlswrite(‘文件名’,{‘列名’},第几个sheet,‘单元格坐标’)
[Score Header] = xlsread(‘文件名’) Score为数字 Header 为行名/列名
4.低阶文件输入输出
type命令: type filename 查看文件内容
fopen() fid = fopen(’[filename]’,‘permission’);
- ‘r’ :read
- ‘w’:write
- ‘r+’:wirte
- ‘w+’:read
- ‘a’:append
- ‘a+’:append
fclose()
fscanf()
fprintf()
x = 0:pi/10:pi;
y = sin(x);
fid = fopen(‘sinx.txt’,‘w’);
for i = 1:11
fprintf(fid,’%5.3f %8.4f\n’,x(i),y(i));
end
fclose(fid);
type sinx.txt
feof()
fid = fopen(‘asciiData.txt’,‘r’); i = 1;
while ~feof(fid)
name(i,:) = fscanf(fid,’%5c’,1);
year(i) = fscanf(fid,’%d’,1);
no1(i) = fscanf(fid,’%d’,1);
no2(i) = fscanf(fid,’%d’,1);
no3(i) = fscanf(fid,’%d’,1);
no4(i) = fscanf(fid,’%d’,1);
i=i+1;
end
fclose(fid);