• Matlab学习——变量与档案存取


    一、变量

    1. char和string

    MATLAB里面的字符和字符串都是用单引号括起来的。

    1. % 示例:
    2. a='I like China';
    3. n=0;
    4. for n=1:1:size(a,2)
    5. b(size(a,2)-n+1)=a(n);
    6. end
    7. disp(a);
    8. disp(b);
    9. % 输出:
    10. >> work
    11. I like China
    12. anihC ekil I
    13. >>
    1. % 示例:
    2. str='zhangpeng';
    3. str(str=='z')='Z';
    4. disp(str);
    5. % 结果:
    6. >> work
    7. Zhangpeng
    8. >>

    2. structure

    1. % 示例:
    2. student(1).name='zhangpeng';
    3. student(1).age=20;
    4. student(1).birthday.year=2002;
    5. student(1).birthday.month=1;
    6. student(1).birthday.day=5;
    7. student(2).name='zhangwei';
    8. student(2).age=18;
    9. student(2).birthday.year=2003;
    10. student(2).birthday.month=10;
    11. student(2).birthday.day=10;
    12. % 结构体中套用结构体
    13. student(3)=struct('name','Zhou Ziyu','age',23,'birthday',struct('year',1999,'month',6,'day',14));
    14. A(1)=struct('data',[3 4 7;8 0 1],'nest',struct('testnum','Test 1','xdata',[4 2 8],'ydata',[7 1 6]));
    15. A(2).data=[9 3 2;7 6 5];
    16. A(2).nest.testnum='Test 2';
    17. A(2).nest.xdata=[3 4 2];
    18. A(2).nest.ydata=[5 0 9];
    19. A.nest

    3. cell

    1. % 示例:
    2. %第一种声明cell的方法
    3. a(1,1)={'zhangpeng'};
    4. a(1,2)={20};
    5. a(2,1)={[1 2 3;4 5 6;7 8 9]};
    6. a(2,2)={1+2i};
    7. disp(a);
    8. %第二种声明cell的方法
    9. a={'zhangpeng',20,[1 2 3;4 5 6;7 8 9],1+2i};
    10. % 输出:
    11. ans =
    12. 1 2 3
    13. 4 5 6
    14. 7 8 9

    在cell中 {} 和 () 的区别:

    1. %定义一个cell
    2. a(1,1)={'zhangpeng'};
    3. a(1,2)={20};
    4. a(2,1)={[1 2 3;4 5 6;7 8 9]};
    5. a(2,2)={1+2i};
    6. % 如果输入a(2,1)回车则只会显示3x3数组;如果输入a{2,1}则会显示数组的详细信息。
    7. >> a(2,1)
    8. ans =
    9. 1×1 cell 数组
    10. {3×3 double}
    11. >> a{2,1}
    12. ans =
    13. 1 2 3
    14. 4 5 6
    15. 7 8 9

    4. reshape函数用法

    b=reshape(a,3,2)表示将a矩阵变为3x2的矩阵

    1. %示例:
    2. a=[1 2 3;4 5 6];
    3. b=reshape(a,3,2);
    4. disp(b);
    5. disp(a);
    6. % 输出:
    7. >> Matlab01
    8. 1 5
    9. 4 3
    10. 2 6
    11. 1 2 3
    12. 4 5 6

    5. cat函数的用法

    cat(1,a,b)是将a、b两个矩阵竖向合并;cat(2,a,b)是将a、b两个矩阵横向合并;cat(3,a,b)是将a、b两个矩阵三维合并。

    1. %示例:
    2. a=[1 2 3 4];
    3. b=[5 6 7 8];
    4. c1=cat(1,a,b);
    5. c2=cat(2,a,b);
    6. c3=cat(3,a,b);
    7. %输出:
    8. >> c1
    9. c1 =
    10. 1 2 3 4
    11. 5 6 7 8
    12. >> c2
    13. c2 =
    14. 1 2 3 4 5 6 7 8
    15. >> c3
    16. c3(:,:,1) =
    17. 1 2 3 4
    18. c3(:,:,2) =
    19. 5 6 7 8

    二、档案高阶存取

    1. 文档的存——save函数

    1. a=magic(5);
    2. %如果不在后面加上-ascii则打开文档后是乱码,看不见数据
    3. save mydata1.mat;
    4. %如果想要打开文档后可以直接看见内容则在后面加上-ascii
    5. save mydata2.mat -ascii;

     2. 文档的取——load函数

    注意:如果存的时候是用-ascii存储的,那么取出的时候也必须使用-ascii来去除。

    1. load('mydata1.mat');
    2. load('mydata2.mat','-ascii');

    3. 文档的Excel读

    xlsread('matlab.xlsx')或者xlsread('matlab.xlsx','B2:D4')效果一样,因为默认情况下就是读取数据。

    1. >> score1=xlsread('matlab.xlsx','B2:D4');
    2. >> score2=xlsread('matlab.xlsx');
    3. >> score1
    4. score1 =
    5. 90 100 100
    6. 88 78 96
    7. 100 89 78
    8. >> score2
    9. score2 =
    10. 90 100 100
    11. 88 78 96
    12. 100 89 78

    4. 文档的Excel写

    xlswrite('matlab.xlsx',mymean,1,'E2:E4');

    第一个参数是文件名 第二个参数是要写入的内容 第三个参数是文件页数 第四个参数是写入的位置。

    1. % 计算出平均值放入E2到E4这一列
    2. >> score=xlsread('matlab.xlsx');
    3. >> mymean=mean(score')';
    4. >> xlswrite('matlab.xlsx',mymean,1,'E2:E4');
    5. score =
    6. 90.0000 100.0000 100.0000 96.6667
    7. 88.0000 78.0000 96.0000 87.3333
    8. 100.0000 89.0000 78.0000 89.0000

    5. 同时提取文档中的数据和标题

    1. % 用score提取数据,用name提取标题
    2. >> [score name]=xlsread('matlab.xlsx');
    3. >> score
    4. score =
    5. 90.0000 100.0000 100.0000 96.6667
    6. 88.0000 78.0000 96.0000 87.3333
    7. 100.0000 89.0000 78.0000 89.0000
    8. >> name
    9. name =
    10. 4×5 cell 数组
    11. {'name' } {'Chinese'} {'Math' } {'English'} {'mean' }
    12. {'Zhang Peng'} {0×0 char } {0×0 char} {0×0 char } {0×0 char}
    13. {'Zhang Wei' } {0×0 char } {0×0 char} {0×0 char } {0×0 char}
    14. {'Zhou Ziyu' } {0×0 char } {0×0 char} {0×0 char } {0×0 char}

    三、文档的低阶存取

    1.文档的写入

    1. % 示例:
    2. x=0:pi/10:pi;
    3. y=sin(x);
    4. fid=fopen('sinx.txt','w'); %fopen会返回文件的地址;‘w’的意思是可以对文件进行写
    5. for i=1:11
    6. fprintf(fid,'%5.3f %8.4f\n',x(i),y(i)); %'%5.3f %8.4f\n'表示对输入的x,y的写入格式,"%5.3f"是指输出总共5个数字,小数点后面三个数字。
    7. end
    8. fclose(fid);
    9. type sinx.txt;

    输出:

    2.文档的读出

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

  • 相关阅读:
    【C语言练习——交换两个变量的值】
    Go 上下文 context.Context
    Pinia的学习与项目的创建
    mysql基本操作增删改查
    IPV4跟IPV6的区别
    基础IO详解
    RIP协议(路由信息协议)
    【node.js从入门到精通】编写接口,使用CROS解决跨域问题,jsonp的接口
    Linux网络编程—Day11 高性能服务器程序框架
    改进后的 Google Play 管理中心用户管理: 访问请求、权限组等
  • 原文地址:https://blog.csdn.net/qq_58011370/article/details/122340610