微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > 系统帮助

matlab如何画散点图

时间:2024-11-22 18:13:06   

大家好,今天Win10系统之家小编给大家分享「matlab如何画散点图」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

如何画漫画app系列软件最新版本下载

1.matlab 如何做散点图


  我想楼上的几位应该都没有明白楼主的意思,楼主是说给定这几个点,(也仅有这几个点,给出函数纯粹是为了得到这几个点的坐标,而非用这几个函数画图)用这仅有的几个离散点画出一条光华的曲线来,对吧。
前两个人回答的直接就画出折线了,显然错误,我楼上这位程序画出的图“形似”光滑,但实际上读一读他的代码,就可以发现,他是用你给的这几个函数在画图,也就是相当于把x和y1看成以t为参数的参数方程,这样的参数方程有可能是个曲线方程,但也有可能是分段的不光滑的曲线,只是因为这张图像不精确的关系而看不出来,在这个具体问题中我没有求证他是否光滑,但是这不是关键问题,关键问题是你想只通过这仅有的几个点得到一条穿过他们的曲线,对吧?
这其实是数值分析里最基本的问题,也就是插值问题。解决的方法也有很多,最常用的是多项式插值,还有beizier插值什么的。多项式插值就是构造一个多项式,他穿过你给的所有点。而且又由于是多项式所以必然光滑
至于多项式插值的具体实现,方法也是多种多样,就本人所学的最常用的是利用newton法构造差商表来求此多项式系数,如果你有兴趣去随便买一本数值分析或者数值逼近的书,上面都有详细的介绍(比如说复旦大学的《数值逼近》,蒋尔雄)。这个算法我以前写过,也许还有很多不足的地方,但足够解决你这个问题:
%下面这个函数是算多项式系数的,请保存成newton.m
%-------------------------------------
function y=newton(x,y)
temp=y(1);
k=length(x);
for i=1:k-1
 for j=1:k-i
 y(j)=(y(j+1)-y(j))/(x(j+i)-x(j));
 end;
 y(1+k-i)=y(1);
end;
y(1)=temp;
%-----------------------------------------------
算完多项式系数后腰根据系数算给定点的值,所以写了一个newton_eval函数,如下:
%这个程序请保存成newton_eval.m
%--------------------------------------------------------
% c means the polynomial's factor 
% x,y is the knots
% z is a variable
% k is how many knots do we have
% this function can evaluate the polynomial which use y as its factor
function f=newton_eval(z,x,y)
c=newton(x,y);
[m,n]=size(z);
k=length(x);
f(1:n)=(z(1:n)-x(k-1)).*c(2);
for i=k-1:-1:2
 f(1:n)=(f(1:n)+c(-i+k+2)).*(z(1:n)-x(i-1));
end;
f(1:n)=f(1:n)+y(1);
%---------------------------------------------------
最后就是主程序啦,随便取个名字就行,然后运行这个主程序就ok了
%--------------------------------------main 程序
clc;
close all;
clear; 
t=[1.1, 2.6, 3.4, 5.4, 6.1];
x=3*t.^2; 
y1=20.36*t.^3+12; 
y2=17.25*t.^2-2.3; 
y3=12.23*x.^3-21.3; 
y4=7.86*x.^4+23.6; 
tt=linspace(x(1),x(5),1000);
f1tt=newton_eval(tt,x,y1);
fig1=subplot(2,2,1);
plot(x,y1,'o');
hold on;
line1=plot(tt,f1tt,'-r');
hold on;
legend(fig1,line1,'x-y1插值曲线');
f2tt=newton_eval(tt,x,y2);
fig2=subplot(2,2,2);
plot(x,y2,'o');
hold on;
line2=plot(tt,f2tt,'-r');
legend(fig2,line2,'x-y2插值曲线');
f3tt=newton_eval(tt,x,y3);
fig3=subplot(2,2,3);
plot(x,y3,'o') 
hold on;
line3=plot(tt,f3tt,'-r');
legend(fig3,line3,'x-y3插值曲线');
f4tt=newton_eval(tt,x,y4);
fig4=subplot(2,2,4);
plot(x,y4,'o') 
hold on;
line4=plot(tt,f4tt,'-r');
legend(fig4,line4,'x-y4插值曲线');
%---------------------------------------------------------
至于那两个函数为什么那么写,就需要你自己去学习一下数值数学的基本知识了...

2.MATLAB画散点图有哪些方法


  我想楼上的几位应该都没有明白楼主的意思,楼主是说给定这几个点,(也仅有这几个点,给出函数纯粹是为了得到这几个点的坐标,而非用这几个函数画图)用这仅有的几个离散点画出一条光华的曲线来,对吧。
前两个人回答的直接就画出折线了,显然错误,我楼上这位程序画出的图“形似”光滑,但实际上读一读他的代码,就可以发现,他是用你给的这几个函数在画图,也就是相当于把x和y1看成以t为参数的参数方程,这样的参数方程有可能是个曲线方程,但也有可能是分段的不光滑的曲线,只是因为这张图像不精确的关系而看不出来,在这个具体问题中我没有求证他是否光滑,但是这不是关键问题,关键问题是你想只通过这仅有的几个点得到一条穿过他们的曲线,对吧?
这其实是数值分析里最基本的问题,也就是插值问题。解决的方法也有很多,最常用的是多项式插值,还有beizier插值什么的。多项式插值就是构造一个多项式,他穿过你给的所有点。而且又由于是多项式所以必然光滑
至于多项式插值的具体实现,方法也是多种多样,就本人所学的最常用的是利用newton法构造差商表来求此多项式系数,如果你有兴趣去随便买一本数值分析或者数值逼近的书,上面都有详细的介绍(比如说复旦大学的《数值逼近》,蒋尔雄)。这个算法我以前写过,也许还有很多不足的地方,但足够解决你这个问题:
%下面这个函数是算多项式系数的,请保存成newton.m
%-------------------------------------
function y=newton(x,y)
temp=y(1);
k=length(x);
for i=1:k-1
 for j=1:k-i
 y(j)=(y(j+1)-y(j))/(x(j+i)-x(j));
 end;
 y(1+k-i)=y(1);
end;
y(1)=temp;
%-----------------------------------------------
算完多项式系数后腰根据系数算给定点的值,所以写了一个newton_eval函数,如下:
%这个程序请保存成newton_eval.m
%--------------------------------------------------------
% c means the polynomial's factor 
% x,y is the knots
% z is a variable
% k is how many knots do we have
% this function can evaluate the polynomial which use y as its factor
function f=newton_eval(z,x,y)
c=newton(x,y);
[m,n]=size(z);
k=length(x);
f(1:n)=(z(1:n)-x(k-1)).*c(2);
for i=k-1:-1:2
 f(1:n)=(f(1:n)+c(-i+k+2)).*(z(1:n)-x(i-1));
end;
f(1:n)=f(1:n)+y(1);
%---------------------------------------------------
最后就是主程序啦,随便取个名字就行,然后运行这个主程序就ok了
%--------------------------------------main 程序
clc;
close all;
clear; 
t=[1.1, 2.6, 3.4, 5.4, 6.1];
x=3*t.^2; 
y1=20.36*t.^3+12; 
y2=17.25*t.^2-2.3; 
y3=12.23*x.^3-21.3; 
y4=7.86*x.^4+23.6; 
tt=linspace(x(1),x(5),1000);
f1tt=newton_eval(tt,x,y1);
fig1=subplot(2,2,1);
plot(x,y1,'o');
hold on;
line1=plot(tt,f1tt,'-r');
hold on;
legend(fig1,line1,'x-y1插值曲线');
f2tt=newton_eval(tt,x,y2);
fig2=subplot(2,2,2);
plot(x,y2,'o');
hold on;
line2=plot(tt,f2tt,'-r');
legend(fig2,line2,'x-y2插值曲线');
f3tt=newton_eval(tt,x,y3);
fig3=subplot(2,2,3);
plot(x,y3,'o') 
hold on;
line3=plot(tt,f3tt,'-r');
legend(fig3,line3,'x-y3插值曲线');
f4tt=newton_eval(tt,x,y4);
fig4=subplot(2,2,4);
plot(x,y4,'o') 
hold on;
line4=plot(tt,f4tt,'-r');
legend(fig4,line4,'x-y4插值曲线');
%---------------------------------------------------------
至于那两个函数为什么那么写,就需要你自己去学习一下数值数学的基本知识了...

3.matlab怎么画出这个散点图?有人可以教我吗


  方法/步骤
  既然要画散点图,自然就需要一些离散的数据了,下面我们就利用matlab生成这些数据,实际应用中我们获得的数据是从其他方式获得的。具体的指令和结果如下图所示:
  首先需要先画出点图,即把每一个数据点的位置画出来,所使用的指令为:scatter(x,y1,k),该指令主要用于绘制点图,后面里面的k标示的是每一个点用黑色画出,里面也可以一起添加一些其他的参数:如下图所示:
  下面是利用第一步生成的数据和第二步的指令画出的点图,如下图所示,绿色的是y1的数据,红色的是y2的数据。
  下面就把点串起来,就大功告成了,使用的指令是:plotyy(x,y1,x,y2,plot);具体的图形如下图所示:
  请大家支持*西楚霸王1990*原创经验,觉得本篇作品对你有所帮助的朋友请动动手指支持我吧。
  欢迎把知识和经验分享给更多需要它的人!

以上就是关于「matlab如何画散点图」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

【此①文为Win10系统之家www.ghost580.net文①章,未经允许不得转载!】

相关文章

  • matlab如何画散点图

    matlab如何画散点图

    1.matlab如何做散点图我想楼上的几位应该都没有明白楼主的意思,楼主是说给定这几个点,(也仅有这几个点,给出函数纯粹是为了得到这几个点的坐标,而非用这几个函数画图)用这仅有的几个离散点画出一条光华的曲线来,对吧...
  • matlab 如何画矩阵

    matlab 如何画矩阵

    1.MATLAB怎么创建这样的矩阵1.向量的创建1)直接输入:线向量:a=[1,2,3,4,5]列:a=[1;2;3;4;5]2)生成一个带有“3360”的向量A=J3360K生成的行向量是a=[J,J^1,…,K]A=j3360d3360k生成行向量a=[J,JD,…,Jm*D],m=fix((K-J)/D)...
  • 如何画平面设计图

    如何画平面设计图

    1.怎样画简单的平面设计图画简单的平面设计图要遵循以下原因:1、材质的表现:大面积的地面是平面中的主要刻画对象,注意:不要画的太满,刻画的重点在于主体物的周围,你可以先用彩铅平铺一便,然后再做局部的纹理细节刻画...
  • word如何画三线表

    word如何画三线表

    1.如何在word文档中制作三线表所需要的工具:Word在Word文档中制作三线表的步骤:1.三线表的基本要求是只有三条线,两边的线条稍微粗一点,中间的那根线条稍微细一点2.首先,在word里面先插入一个你设置好的完整横列表格...