MATLAB里面的字符和字符串都是用单引号括起来的。
- % 示例:
-
- a='I like China';
- n=0;
- for n=1:1:size(a,2)
- b(size(a,2)-n+1)=a(n);
- end
- disp(a);
- disp(b);
-
- % 输出:
-
- >> work
- I like China
- anihC ekil I
- >>
- % 示例:
-
- str='zhangpeng';
- str(str=='z')='Z';
- disp(str);
-
- % 结果:
-
- >> work
- Zhangpeng
- >>
- % 示例:
-
- student(1).name='zhangpeng';
- student(1).age=20;
- student(1).birthday.year=2002;
- student(1).birthday.month=1;
- student(1).birthday.day=5;
-
- student(2).name='zhangwei';
- student(2).age=18;
- student(2).birthday.year=2003;
- student(2).birthday.month=10;
- student(2).birthday.day=10;
-
- % 结构体中套用结构体
- student(3)=struct('name','Zhou Ziyu','age',23,'birthday',struct('year',1999,'month',6,'day',14));
-
- A(1)=struct('data',[3 4 7;8 0 1],'nest',struct('testnum','Test 1','xdata',[4 2 8],'ydata',[7 1 6]));
- A(2).data=[9 3 2;7 6 5];
- A(2).nest.testnum='Test 2';
- A(2).nest.xdata=[3 4 2];
- A(2).nest.ydata=[5 0 9];
- A.nest
- % 示例:
-
- %第一种声明cell的方法
- a(1,1)={'zhangpeng'};
- a(1,2)={20};
- a(2,1)={[1 2 3;4 5 6;7 8 9]};
- a(2,2)={1+2i};
- disp(a);
-
- %第二种声明cell的方法
- a={'zhangpeng',20,[1 2 3;4 5 6;7 8 9],1+2i};
-
-
- % 输出:
-
- ans =
- 1 2 3
- 4 5 6
- 7 8 9
在cell中 {} 和 () 的区别:
- %定义一个cell
-
- a(1,1)={'zhangpeng'};
- a(1,2)={20};
- a(2,1)={[1 2 3;4 5 6;7 8 9]};
- a(2,2)={1+2i};
-
- % 如果输入a(2,1)回车则只会显示3x3数组;如果输入a{2,1}则会显示数组的详细信息。
-
- >> a(2,1)
- ans =
- 1×1 cell 数组
- {3×3 double}
-
- >> a{2,1}
- ans =
- 1 2 3
- 4 5 6
- 7 8 9
b=reshape(a,3,2)表示将a矩阵变为3x2的矩阵
- %示例:
- a=[1 2 3;4 5 6];
- b=reshape(a,3,2);
- disp(b);
- disp(a);
-
- % 输出:
- >> Matlab01
- 1 5
- 4 3
- 2 6
-
- 1 2 3
- 4 5 6
cat(1,a,b)是将a、b两个矩阵竖向合并;cat(2,a,b)是将a、b两个矩阵横向合并;cat(3,a,b)是将a、b两个矩阵三维合并。

- %示例:
- a=[1 2 3 4];
- b=[5 6 7 8];
- c1=cat(1,a,b);
- c2=cat(2,a,b);
- c3=cat(3,a,b);
-
- %输出:
- >> c1
- c1 =
- 1 2 3 4
- 5 6 7 8
-
- >> c2
- c2 =
- 1 2 3 4 5 6 7 8
-
- >> c3
- c3(:,:,1) =
- 1 2 3 4
- c3(:,:,2) =
- 5 6 7 8
- a=magic(5);
- %如果不在后面加上-ascii则打开文档后是乱码,看不见数据
- save mydata1.mat;
- %如果想要打开文档后可以直接看见内容则在后面加上-ascii
- save mydata2.mat -ascii;

注意:如果存的时候是用-ascii存储的,那么取出的时候也必须使用-ascii来去除。
- load('mydata1.mat');
- load('mydata2.mat','-ascii');
xlsread('matlab.xlsx')或者xlsread('matlab.xlsx','B2:D4')效果一样,因为默认情况下就是读取数据。
- >> score1=xlsread('matlab.xlsx','B2:D4');
- >> score2=xlsread('matlab.xlsx');
- >> score1
- score1 =
-
- 90 100 100
- 88 78 96
- 100 89 78
-
- >> score2
- score2 =
-
- 90 100 100
- 88 78 96
- 100 89 78
xlswrite('matlab.xlsx',mymean,1,'E2:E4');
第一个参数是文件名 第二个参数是要写入的内容 第三个参数是文件页数 第四个参数是写入的位置。
- % 计算出平均值放入E2到E4这一列
- >> score=xlsread('matlab.xlsx');
- >> mymean=mean(score')';
- >> xlswrite('matlab.xlsx',mymean,1,'E2:E4');
- score =
- 90.0000 100.0000 100.0000 96.6667
- 88.0000 78.0000 96.0000 87.3333
- 100.0000 89.0000 78.0000 89.0000
- % 用score提取数据,用name提取标题
- >> [score name]=xlsread('matlab.xlsx');
- >> score
- score =
-
- 90.0000 100.0000 100.0000 96.6667
- 88.0000 78.0000 96.0000 87.3333
- 100.0000 89.0000 78.0000 89.0000
-
- >> name
- name =
-
- 4×5 cell 数组
-
- {'name' } {'Chinese'} {'Math' } {'English'} {'mean' }
- {'Zhang Peng'} {0×0 char } {0×0 char} {0×0 char } {0×0 char}
- {'Zhang Wei' } {0×0 char } {0×0 char} {0×0 char } {0×0 char}
- {'Zhou Ziyu' } {0×0 char } {0×0 char} {0×0 char } {0×0 char}
- % 示例:
- x=0:pi/10:pi;
- y=sin(x);
- fid=fopen('sinx.txt','w'); %fopen会返回文件的地址;‘w’的意思是可以对文件进行写
- for i=1:11
- fprintf(fid,'%5.3f %8.4f\n',x(i),y(i)); %'%5.3f %8.4f\n'表示对输入的x,y的写入格式,"%5.3f"是指输出总共5个数字,小数点后面三个数字。
- end
- fclose(fid);
- type sinx.txt;

- % 示例:
- fid=fopen('data.txt','r');
- i=1;
- while ~feof(fid) % feof(fid)表示如果没有读到文件的末尾则返回0,如果读到文件末尾则返回1.
- name(i,:) =fscanf(fid,'%10c',1);
- year(i) =fscanf(fid,'%d',1);
- month(i) =fscanf(fid,'%d',1);
- day(i) =fscanf(fid,'%d',1);
- i=i+1;
- end
- fclose(fid);