matlab—特殊变量类型与档案存取

栏目: 编程工具 · 发布时间: 5年前

内容简介:其实就是在student后面用括号括起来加个数字其实structure还有很多用法,比方说我要显示名为"Ann Lane"的学生的第三个成绩,也就是90,可以使用通过上面两种代码可以看到,无论是哪种方式,都必须要用

Structure

Structure即结构。举个例子,有一个学生的结构,包含姓名、邮箱、学号、成绩

matlab—特殊变量类型与档案存取
student.name = 'John Doe';
student.id = 'jd2@sfu.ca';
student.number = 301073268;
student.grade = [100,75,73;95,91,85.5;100,90,72];

structure的作用可不止这么点,假如学生不止一个人,有多了个学生

matlab—特殊变量类型与档案存取
student(2).name = 'Ann Lane';
student(2).id = 'aln4@sfu.ca';
student(2).number = 301078853;
student(2).grade = [95 100 90;95 82 97;100 85 100]

其实就是在student后面用括号括起来加个数字

其实structure还有很多用法,比方说我要显示名为"Ann Lane"的学生的第三个成绩,也就是90,可以使用 student(2).grade(7)student(2).grade(1,3)

cell array

cell有点类似矩阵,但是矩阵的每个位置存储的都是数值,而cell的每个位置可以用来存储不同类型的值,比方说, A(1,1) 的位置存储一个3*3的矩阵, A(1,2) 的位置存储一个string类型的字符串, A(1,3) 的位置存储一个复数 3+7iA(1,4) 的位置存储一个1*3的矩阵

matlab—特殊变量类型与档案存取

cell的定义代码有点类似于structure,有两种定义方式

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};
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;

通过上面两种代码可以看到,无论是哪种方式,都必须要用 {} ,花括号是至关重要的。

现在我要显示 A(1,1) 里面的内容

matlab—特殊变量类型与档案存取

在这里我把花括号和圆括号展示cell内容的代码都写出来,好让读者区分, 圆括号 只会告诉你cell这个位置存储的是个什么 类型的值 ,而 花括号 会给你展示这里面 值得内容

num2cell()函数

num2cell() 函数的作用是将一个矩阵转换为相同行列数的cell类型,下面我们首先用 magic(n) 函数创建一个魔方矩阵(每行、列、对角线上数的和相等,并且该和的值为$\frac{1+2+...n^2}{n}$,n必须党羽等于3)

a = magic(3)
b = num2cell(a)

$$

A =

\left[

\begin{matrix}

8 & 1 & 6 \\

3 & 5 & 7 \\

4 & 9 & 2

\end{matrix}

\right]

$$

$$ A = \left[ \begin{matrix} [8] & [1] & [6] \\ [3] & [5] & [7] \\ [4] & [9] & [2] \end{matrix} \right] $$

mat2cell()函数

假如不想一个一个将矩阵内的值转换成cell,而是想一块一块的转换,比方说以行为单位,一行一行的转换成cell,转换成3行一列的cell

c = mat2cell(a,[1 1 1],3)

cat()函数

之前讲的都只涉及到一维或二维,创建三维矩阵或者cell,就用 cat() 函数

A = [1 2;3 4];
B = [5 6;7 8];
C = cat(3,A,B);

matlab—特殊变量类型与档案存取

reshape()函数

reshape() 函数的作用是将一个$i*j$的矩阵转换为$i_{new}*j_{new}$的矩阵,前提条件是$i*j = i_{new}*j_{new}$

A = {'James Bond',[1 2;3 4;5 6]; pi,magic(5)};
C = reshape(A,1,4);

reshape() 函数里的三个参数,第一个是需要转换的矩阵的名字,第二个是需要转换的行数,第三个数需要转换的列数

File Access

们有时候需要把计算完的 workspace 里的 data 存储为档案,或者是将存储的档案读取到 workspace 里,所以我们这里涉及到两个操作, loadsave

save

save的含义是:Save (all) workspace data to a file

首先创建一个4*4的矩阵,然后通过save函数将其保存

matlab—特殊变量类型与档案存取

当我们输入代码之后,workspace 里的所有数据都被保存了指定的文件夹下,现在看看能不能通过记事本打开 data1

matlab—特殊变量类型与档案存取

通过记事本打开,里面的内容并不是矩阵的数值,而是一些相关信息,如果想保存为记事本也能打开的格式需要用这段代码 save data2.mat -ascii ,在代码后买你加上 -ascii 即可

如果不是想保存workspace里的所有变量,只是想保存某一个或者某一些,只要鼠标右键这个变量,另存为即可

load

matlab—特殊变量类型与档案存取

xlsread

xlsread() 函数主要是用于读取excel文件的内容。我现在有这样一个excel文件

matlab—特殊变量类型与档案存取

通过代码 score = xlsread('04Score.xlsx') ,那么matlab就会把整个excel内的数据全部读进来?不对,其实matlab在读excel 内的数据时会将数值和 string 类型的字符串分开来,只会读数值

matlab—特殊变量类型与档案存取

因为excel里有坐标,每个单元格都有其位置,比方说94,他的位置就是B2,因此可以选定一个区域进行读取 score = xlsread('04Score','C3:D4')

因为matlab矩阵里面只能有数值类型的变量,所以不会读入string类型,但是可以分开读

matlab—特殊变量类型与档案存取

xlswrite

xlswrite() 函数的作用是写入 excel。我们把刚才从 excel 中读入进来的数据,算他们每个人的平均数,然后再写入他们每个人的成绩的后一列。

首先是计算平均数,算平均数的函数是 mean()mean() 计算平均数时是一列一列算的,但是这里我们应该一行一行算,所以代码应该是: mean(score')

创建一个矩阵,默认是一行多列,但是我们现在需要的是多行一列,所以还需要在 mean() 函数的后买你再次转置,然后再写入excel

M = mean(score')';
xlswrite('04Score.xlsx',M,1,'E2:E4');

在写入的时候,excel是不能开着的

最后总结一下 xlswrite() 函数的格式: xlswrite('filename',variable,sheet,'location') ,"sheet"的含义是excel的第几页


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

第三次工业革命

第三次工业革命

[美] 杰里米•里夫金(Jeremy Rifkin) / 张体伟 / 中信出版社 / 2012-5 / 45.00元

第一次工业革命使19世纪的世界发生了翻天覆地的变化 第二次工业革命为20世纪的人们开创了新世界 第三次工业革命同样也将在21世纪从根本上改变人们的生活和工作 在这本书中,作者为我们描绘了一个宏伟的蓝图:数亿计的人们将在自己家里、办公室里、工厂里生产出自己的绿色能源,并在“能源互联网”上与大家分享,这就好像现在我们在网上发布、分享消息一样。能源民主化将从根本上重塑人际关系,它将影响......一起来看看 《第三次工业革命》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试