MATLAB使用实例代码注释--图形应用举例(9-15)

实例9:饼图的绘制

代码及注释:

%实例9:饼图的绘制
h0 = figure('toolbar','none','name','实例009');
t = [54 21 35;
    68 54 35;
    45 25 12;
    48 68 45;
    68 54 69];
%对矩阵求和,按列求和,结果为 x =283 222 196的矩阵
x = sum(t);
%画饼状图
h = pie(x);
%返回属性名为h,属性值类型为text的图像的值给予textobjs
textobjs = findobj(h ,'type','text');
%获取对象为textobjs,属性为string的值
str1 = get(textobjs,{'string'});
%获取对象为textobjs,属性为extent的值
val1 = get(textobjs,{'extent'});
%按照顺讯排列方式1组成矩阵,其中val1{:}作用是将内部存储的数组变成矩阵类型
oldext = cat(1,val1{:});
names = {'商品1:';'商品2:';'商品3:'};
%将names数组和str1连接起来
str2 = strcat(names,str1);
%设定textobjs中属性string的值为str2
set(textobjs,{'string'},str2)
%获取对象为textobjs,属性为extent的值
val2 = get(textobjs,{'extent'});
%按照顺讯排列方式1组成矩阵,其中val2{:}作用是将内部存储的数组变成矩阵类型
newext = cat(1,val2{:});
%%
%以下内容作用不明确

% %sign是特定函数
% % x > 0 is 1.
% % x = 0 is 0.
% % x < 0 is -1.
% %复数时 x is x/|x|.
% %其中oldext(:,1)作用是提取oldext中第一列的数值
% offset = sign(oldext(:,1)).*(newext(:,3)-oldext(:,3))/2;
% pos = get(textobjs,{'position'});
% textpos = cat(1,pos{:});
% textpos(:,1) = textpos(:,1) + offset;
% %num2cell(textpos,[3,2])作用是形成多维数组
% set(textobjs,{'position'},num2cell(textpos,[3,2]))

结果:
在这里插入图片描述

实例10:阶梯图

代码及注释:

%实例10:阶梯图
h0 = figure('toolbar','none','name','实例010');
a = 0.01;
b = 0.5;
t = 0:10;
f =exp(-a*t).*sin(b*t);
%画出梯形图
stairs(t,f)
hold on
%连接折线图
plot(t,f,':*')
hold off
%确定图的标签及注释
glabel = '函数e^{-(\alpha*t)}sin\beta*t的阶梯图';
gtext(glabel,'fontsize',16)
xlabel('t=0:10','fontsize',16)
%确实横纵坐标范围
axis([0 10 -1.2 1.2])

结果:
在这里插入图片描述

实例11:枝干图

代码及注释:

%实例11:枝干图
h0 = figure('toolbar','none','name','实例011');
x = 0:pi/20:2*pi;
y1 = sin(x);
y2 = cos(x);
%绘制离散的数据图
h1 = stem(x,y1+y2);
hold on
%绘制连接的折线图
h2 = plot(x,y1,'^r',x,y2,'*g');
hold off
%组成三条曲线的数组
h3 = [h1(1);h2];
%legend的作用是添加图例到图形中
legend(h3,'y1+y2','y1=sin(x)','y2=cos(x)')
xlabel('自变量X');
ylabel('函数值Y');
title('正弦函数和余弦函数的线性组合');

结果:
在这里插入图片描述

实例12:罗盘图

代码及注释:

%实例12:罗盘图
h0 = figure('toolbar','none','name','实例012');
winddirection = [54 24 65 84
    256 12 235 62
    125 324 34 254];
windpower = [2 5 5 3
    6 8 12 7
    6 14 10 8];
%转换成弧度制
rdirection = winddirection*pi/180;
%转换为笛卡尔坐标系的坐标
[x,y] = pol2cart(rdirection,windpower);
%画出罗盘图
compass(x,y);
desc = {'风向和风力',
    '北京气象台',
    '10月1日0:00到',
    '10月1日12:00',};
gtext(desc)

结果:
在这里插入图片描述

实例13:轮廓图

代码及注释:

%实例13:轮廓图
h0 = figure('toolbar','none','name','实例013');
[th,r] = meshgrid((0:10:360)*pi/180,0:0.05:1);
%转换为笛卡尔坐标
[x,y] = pol2cart(th,r);
z = x+i*y;
f = (z.^4-1).^(0.25);
%将横纵坐标设置为定标系数相同
axis equal
xlabel('实部','fontsize',16);
ylabel('虚部','fontsize',16);
%画出极坐标图,长度为1
h = polar([0 2*pi],[0 1])
%删除h的初始坐标线
delete(h)
hold on
%指定x,y的坐标并在图像中画出20个数据的等值线
contour(x,y,abs(f),20)

结果:
在这里插入图片描述

实例14:交互式图形

代码及注释:

%实例14:交互式图形
h0 = figure('toolbar','none','name','实例014');
axis([0 10 0 10]);
hold on
x = [];
y = [];
n = 0;
%在命令行窗口显示
disp('单击鼠标左键点取需要的点');
disp('单击鼠标右键点取最后一个点');
but = 1;
%利用while循环实现交互
while but == 1
    %函数ginput作用是通过鼠标左键在图像中输入点,右键是but为0退出
    [xi,yi,but] = ginput(1);
    %将采集到的点画出来
    plot(xi,yi,'bo')
    n = n+1;
    disp('单击鼠标左键取下一个点');
    x(n,1) = xi;
    y(n,1) = yi;
end
t = 1:n;
ts =1:0.1:n;
%插值函数spline,让点以曲线的形式连接起来
xs = spline(t,x,ts);
ys = spline(t,y,ts);
plot(xs,ys,'r-');
hold off

结果:
在这里插入图片描述

实例15:变换的傅里叶函数曲线

%实例15:变换的傅里叶函数曲线
h0 = figure('toolbar','none','name','实例015');
%横纵坐标相等
axis equal
%moviein函数在之后的版本中已经不被使用
m = moviein(20,gcf);
set(gca,'nextplot','replacechildren')
%创建用户自定义目标界面
h = uicontrol('style','slider','position',[100 10 500 20],'min',1,'max',20)
for j = 1:20
    %eye作用是创建一个方阵
    plot(fft(eye(j+16)))
    set(h,'value',j)
    %捕捉轴作为框架
    m(:,j) = getframe(gcf);
end
clf;
axes('position',[0 0 1 1]);
movie(m,30)


结果:
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值