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

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

内容简介:其实就是在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的第几页


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

查看所有标签

猜你喜欢:

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

The Art of Computer Programming, Volumes 1-3 Boxed Set

The Art of Computer Programming, Volumes 1-3 Boxed Set

Donald E. Knuth / Addison-Wesley Professional / 1998-10-15 / USD 199.99

This multivolume work is widely recognized as the definitive description of classical computer science. The first three volumes have for decades been an invaluable resource in programming theory and p......一起来看看 《The Art of Computer Programming, Volumes 1-3 Boxed Set》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具