当前位置:首页 > 西工大matlab知识点整理(详细版本)
5)cell函数创建元胞数组
>>b = cell(2, 3) b =
[] [] [] [] [] [] >>whos b
Name Size Bytes Class
b 2x3 24 cell array 注意:每个cell占有4个字节的空间 6)celldisp显示元胞数组的全部内容(3种)
>>a
>>celldisp(a) %显示全部内容
>>cellplot(a) %图形方式显示元胞数组的结构
使用内容下标索引显示指定元胞的数据
格式:var_name{row_index, column_index}
或 var_name{:}
7)读取元胞数组中的内容 读取上述b元胞数组的第1行、第2列元胞的内容
>>b, d=b{1, 2}
读取b{1, 2}的第3行、第1列的数据。 >> e = b{1,2}(3,1)
读取元胞数组a第1行的所有元胞。 >>f=a(1,:)
删除元胞数组a第1行的所有元胞。 >>a(1,:) = []
Note: 这里使用的是元胞索引(cell indexing),而不是内容索引(content indexing)
25.结构与结构数组的概念
结构(structure)
由字段(或域,fields)组成
每个字段可以是任一种Matlab数据类型的数据或变量 与C语言的结构类型相似
结构数组(structure array)
多个结构构成结构数组(structure array) 结构数组的元素就是一个结构
26.结构数组变量的创建
1)方法一:直接键入
>>clear student % 清除student 变量 >>student.name = '张三'; % 加入name 字段 >>student.id = 'mr871912'; % 加入id字段 >>student.scores = [58, 75, 62]; % 加入scores字段 >>student % 显示结构变量的数据
student =
name: '张三' id: 'mr871912' scores: [58,75,62]
此时,Matlab视 student 为一个1x1结构数组 第二个学生的信息建立 >>student(2).name = '张宁'; % 加入name 字段 >>student(2).id = 'mr871913'; % 加入id字段 >>student(2).scores=[68, 85, 92]; % 加入scores字段
此时,student变量已成为一个1x2的结构数组 2)方法二:struc函数
>>clear student
>>student=struct('name', '张听说', 'scores', [50 60]); >> student(2)=struct('name', '张廷安', 'scores', [60 70]); >> student(1), student(2) %显示student(1),student(2) ans =
name: '张听说' scores: [50 60] ans =
name: '张廷安'
scores: [60 70] 或
使用struct创建结构数组变量(一次建立多个元素) >>clear student
>>student = struct('name', {'张听说', '张廷安'}, 'scores', {[50 60], [60 70]}); >> student(1), student(2) %显示student(1), … ans =
name: '张听说' scores: [50 60] ans =
name: '张廷安'
scores: [60 70]
3)结构数组嵌套(nested)
结构数组中结构的字段还可以是结构。 4)访问结构数组变量的内容
cat函数: 排列结构数组某字段的值 格式:cat(dim, structurefield) dim=1, 竖排;dim=2, 横排 Exam:
>>cat(1, student.scores) ans =
55 60 65 80
>>cat(2, student.scores)
ans =
55 60 65 80
5)计算平均值(使用mean函数)
计算每次考试的平均值
>>average1=mean(cat(1, student.scores)) average1 =
60 70
27.plot指令的基本调用格式
(1)plot(x)
x为向量时,以该元素的下标为横坐标、元素值为纵坐标绘出曲线
x为实数二维数组时,则按列绘制每列元素值相对其下标的曲线,曲线数等于x数组的列数。
x为复数二维数组时,则按列分别以数组的实部和虚部为横、纵坐标绘制多条曲线
(2)plot(x, y)
x、y为同维数组时,绘制以x、y元素为横纵坐标的曲线
x为向量,y为二维数组、且其列数或行数等于x的元素数时,绘制多条不同颜色的曲线
x为二维数组,y为向量时,情况与上相同,只是y仍为纵坐标。
x = 0:pi/100:2*pi;
y = 2*exp(-0.5*x).*sin(2*pi*x); plot(x,y) 或
t = -pi:pi/100:pi; x = t.*cos(3*t); y = t.*sin(t).^2; plot(x,y)
(3)plot(x1, y1, x2, y2, …)
绘制以x1为横坐标、y1为纵坐标的曲线1,以x2为横坐标、y2为纵坐标的曲线2,等等。
其中x为横坐标,y为纵坐标,绘制y=f(x)函数曲线。 (4)多次叠绘
多次调用plot命令在一幅图上绘制多条曲线,需要hold指令的配合。 hold on 保持当前坐标轴和图形,并可以接受下一次绘制。
hold off 取消当前坐标轴和图形保持,这种状态下,调用plot绘制完全新的图形,不保留以前的坐标格式、曲线。
(5)双纵坐标:plotyy指令
plotyy指令调用格式: plotyy(x1, y1, x2, y2)
x1-y1曲线y轴在左,x2-y2曲线y轴在右。
(6) 多子图
subplot(m, n, k)
使(m*n)幅子图中第k个子图成为当前图
subplot(‘postion’, *left, bottom, width, height+)
在指定的位置上开辟子图,并成为当前图 (7)分格线与grid指令
grid on 画出分格线 grid off 不画分格线
MATLAB的缺省设置是不画分格线;分格线的疏密取决于坐标刻度(改变坐标刻度,可改变分格线的疏密)。 (8)坐标框
box on 控制加边框线 box off 控制不加边框线 (9)刻度设置
指令及格式:
set(gca, ‘xtick’, xs, ‘ytick’, ys)
xs、ys可以使任何合法的实数向量,用于分别设置x、y轴的刻度。
28.图形标识
(1)图形标识包括:
图名(title)
坐标轴名(xlabel、ylabel) 图形文本注释(text) 图例(legend)
(2)简捷使用格式
title(s) % s为字符串变量或常量 xlabel(s) ylabel(s) legend(s)
text(x, y, s) % 指定坐标(x, y)处加注文字
(3)直方图(柱形图)bar
垂直直方图
累计式
year=[1990 1995 2000];
people=[90.7 281.6 254.8; 70.6 271 323.7; 73.9 214.6 326.5]; bar(year, people, ‘stack’);
legend(‘\\fontsize{6}第一产业’, ‘\\fontsize{6}第二产业’, ‘\\fontsize{6}第三产业');
分组式
bar(year, people, ‘group’); % 分组式直方图
legend(‘\\fontsize{6}第一产业’, ‘\\fontsize{6}第二产业’, ‘\\fontsize{6}第三产业');
水平直方图
累计式
barh(year, people, ‘stack’); % 累积式直方图
共分享92篇相关文档