Matlab画函数图上机练习

19 篇文章 8 订阅
1.绘制下列图像
(1)生成 100 个从 0 到 10 之间的随机整数,绘制图形;
(2)生成 10个从 0 到 10 之间的随机整数,绘制点图,要求为绿色圆圈;

(3)生成0到1之间36个等差数据作为横坐标,画出6阶魔方阵元素图形(将其按行展成一行),要求为黄色上三角,点划线。

%(1)
clear
clc
x=round(rand(1,100)*10);
plot(x);

%(2)
clear
clc
y=round(rand(1,10)*10);
plot(y,'go:');

%(3)
clear
clc
a=linspace(0,1,36);
b=magic(6);
c=reshape(b',1,36);
plot(a,c,'y^-.');

注:其中c=reshape(b',1,36);可用c=b';c=(c(:))';代替。
linspace用于产生等差数列,参数为初值、终值、项数

2.编写程序,该程序在同一窗口中绘制函数在[0,2π]之间的正弦曲线和余弦曲线,步长为π/10,线宽为4个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚线,两条曲线交点处,用红色星号标记。

clear
clc
x=0:pi/10:2*pi;
y1=sin(x);
plot(x,y1,'b-','LineWidth',4);
hold on
y2=cos(x);
plot(x,y2,'r--','LineWidth',4);
xi=fzero(@(x)sin(x)-cos(x),0);
plot(xi,sin(xi),'r*');
plot(xi+pi,sin(xi+pi),'r*');


注:fzero函数用于求根,一般格式如下X = fzero(@(x) myfun(x,c),0.1),第一个参数为求根变量和具体函数,第二个参数数为初值。
本题也可用循环求解、find函数求解。
线宽用参数'LineWidth'指定

循环求解代码

clear
clc
j=1;           %存解的下标
for i=0:1e-4:2*pi           %这里的步长不要取pi/10,尽量精确
    if(abs(sin(i)-cos(i))<=1e-4)
        x(j)=i;
        j=j+1;
    
    end
end
x
结果

x =

    0.7854    3.9270

>> 


find函数求解

i=0:0.0001:pi*2;
y=abs(sin(i)-cos(i));
po=find(y<1e-4);     %1e-4=1*10^(-4)=0.0001
i(po)
结果

ans =

    0.7854    3.9270




3.通过界面交互方式在第 2 题生成的图形中添加注释,至少应包括:标题,文本注释,图例

由于生成的gif动态图超过2M,这里上传了一个视频到土豆网:http://www.tudou.com/programs/view/GPuqtpI-Yv8/


4.通过函数方式在第 2 题生成的图形中添加注释,至少应包括:标题,文本注释,图例。

clear
clc
x=0:pi/10:2*pi;
y1=sin(x);
plot(x,y1,'b-','LineWidth',4);
hold on
y2=cos(x);
plot(x,y2,'r--','LineWidth',4);
xi=fzero(@(x)sin(x)-cos(x),0)
plot(xi,sin(xi),'r*')
plot(xi+pi,sin(xi+pi),'r*')
title('This is a example ') 
text(xi,sin(xi),'this is first point')
text(xi+pi,sin(xi+pi),'this is second point')
legend('FirstLine','SecondLine',-1) 

5.在0≤x≤2的区间内,绘制曲线y=2e^(-0.5x)*cos(4πx)

fplot('2*exp(-0.5*x)*cos(4*pi*x)',[0,2]) 

%%下面作为指定步长时的代码,不能作为答案
clear
clc
x=0:0.01:2;
y=2*exp(-0.5*x).*cos(4*pi*x);
plot(x,y)

6.绘制下列图像
(1)y=xsinx,0<x<10π
(2)y=0,0<x<a;y=(x-a)/(b-a),a≤x≤b;0,b<x<1.其中a=0.1,b=0.8

%6.(1)
fplot('x*sin(x)',[0,20*pi]) 


%%下面作为指定步长时的代码,不能作为答案
clear
clc
x=0:0.01:20*pi;
y=x.*sin(x);
plot(x,y)


6.(2)的m文件

%6.(2)
%f.m

function y=f(x)
a=0.1;b=0.8;
if(x>0&&x<a)
   y=0;
elseif(x=>a&&x<=b)
    y=(x-a)/(b-a);
else
    y=0;
end

运行

fplot('f',[0,1])



%%下面作为指定步长时的代码,不能作为答案
clear
clc
a=0.1;b=0.8
x1=0:0.01:a;
x2=a+eps:0.01:b;
x3=b:0.01:1;
y1=0.*x1;
y2=(x2-a)./(b-a);
y3=0.*x3;
plot(x1,y1,x2,y2,x3,y3)
7.测量三组样品的稳定性随时间的变化情况,得到如下一一组实验数据:
时间    样品a    样品b    样品c
1    12.51     2.87     10.11
2    13.54     20.54     8.14
3    15.60     32.21     14.17
4    15.92     40.50     20.14
5    20.64     48.31     40.50
6    24.53     64.51     39.45
7    30.24     72.32     60.11
8    30.00     85.98     62.13
9    36.34     89.77     20.90
请画出其图形,要求标注出坐标轴、数据点位置、数据点大小

a=[12.51 2.87 10.11;13.54 20.54 8.14;15.60 32.21 14.17; 15.92 40.50 20.14; 20.64 48.31 40.50;24.53 64.51 39.45;30.24 72.32 60.11;30.00 85.98 62.13;36.34 89.77 20.90]  
plot(a,'+--')  
xlabel('时间');  
ylabel('稳定性');  
text(4,a(4,1),'\leftarrow 样品a')  
text(2,a(2,2),'\leftarrow 样品b')  
text(6,a(6,3),'\leftarrow 样品c')
[m,n]=size(a);                %m=9,n=3
for i=1:n
    for j=1:m
        text(j,a(j,i)+0.5,num2str(a(j,i)));
    end
end

注:这里用text函数进行标注,网上大部分代码(包括课件)并未对值进行标注。

num2str函数用于把数值转换为字符串

下面是对网上代码的更改

clear
clc
t=1:9;
d1=[12.51 13.54 15.60 15.92 20.64 24.53 30.24 30.00 36.34];
d2=[2.87 20.54 32.21 40.50 48.31 64.51 72.32 85.98 89.77];
d3=[10.11 8.14 14.17 20.14 40.50 39.54 60.11 62.13 20.90];
plot(t,d1,'r.-',t,d2,'gx:',t,d3,'m*-.');
title('稳定性变化规律')
xlabel('时间');  
ylabel('稳定性');  
axis([0 10 0 100]);
text(6.5,25.5,'\leftarrow样品a');
text(3,43.8,'样品b\rightarrow ');
text(4.8,30.5,'\leftarrow样品c');
for i=1:9
    text(i,d1(i)+0.5,num2str(d1(i)));
    text(i,d2(i)+0.5,num2str(d2(i)));
    text(i,d3(i)+0.5,num2str(d3(i)));
end



8.绘制位于一列的子图,分别为y=x+sinx,y=1+cosx,x∈[-5,5],步长为0.2,标题分别为‘原函数图形’,‘导函数图形’,x,y轴标注分别为'x','y',上面子图要红色加号点图,鼠标定位文字为‘原函数’,下面子图要求为黑色点线图,加网格,坐标轴范围为x∈[-5,5],y∈[0,1.5]。

clear
clc
x=-5:0.2:5;
y1=x+sin(x);
y2=1+cos(x);
subplot(211);plot(x,y1,'r:');  
title('原函数图形');  
xlabel('x');
ylabel('y'); 
gtext('原函数')
subplot(212);plot(x,y2,'k:');    
title('导函数图形'); 
xlabel('x');
ylabel('y'); 
grid on
axis([-5 5 0 1.5]) 





%鼠标定位文字为‘原函数’:gtext('原函数')
坐标轴范围axis([-5 5 0 1.5])

9.绘制三个子图,上面一个,下面2个,区间为,上面为正切函数,下面两个分别为正弦,余弦函数,区间颜色线型点型自定义,要求好看。

clear
clc
x=-4*pi:0.1:4*pi;
y1=tan(x);
y2=sin(x);
y3=cos(x);
subplot(2,2,[1 2]);plot(x,y1,'b.-');title('tan(x)') %将第一行的两个合并为一个  
axis([-4*pi 4*pi -100 100]);
subplot(2,2,3);plot(x,y2,'c+:');title('sin(x)')  
subplot(2,2,4);plot(x,y3,'go-.');title('cos(x)')  

10.绘制三个子图,上面2个,下面1个,图形自定义。

clear
clc
x=-4*pi:0.1:4*pi;
y1=x;
y2=sin(x);
y3=cos(x);
subplot(2,2,1);plot(x,y1,'b.-');title('x')  
axis([-10 10 -10 10]);
subplot(2,2,2);plot(x,y2,'c+:');title('sin(x)')  
subplot(2,2,[3 4]);plot(x,y3,'go-.');title('cos(x)') 








  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值