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 34 5 67 8 9
在cell中 {} 和 () 的区别:
%定义一个cella(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 34 5 67 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);% 输出:
>> Matlab011 54 32 61 2 34 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 45 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');
>> score1score1 =90 100 10088 78 96100 89 78>> score2score2 =90 100 10088 78 96100 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.666788.0000 78.0000 96.0000 87.3333100.0000 89.0000 78.0000 89.0000
% 用score提取数据,用name提取标题
>> [score name]=xlsread('matlab.xlsx');
>> scorescore =90.0000 100.0000 100.0000 96.666788.0000 78.0000 96.0000 87.3333100.0000 89.0000 78.0000 89.0000>> namename =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:11fprintf(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);
上一篇:MEI 论文笔记