barriers / 阅读 / 详情

如何用stata画图

2023-07-19 17:59:56
共2条回复
小教板

/* 图形类型和相关绘图命令

二维图: graph twoway

散点矩阵图:graph matrix

箱式图:graph box

饼图:graph pie

条图:graph bar

圆点图:graph dot

*/

//二维图,以绘制散点图为例

help scatter

help marker_label_options

sysuse uslifeexp2,clear

describe

scatter le year //第一变量是y轴变量,第二个是x轴变量

scatter le year,connect(l) //connect(l) 表示以直线的方式连接相邻的两个点

scatter le year,connect(l) msymbol(i) //msymbol 表示散点的显示方式为“看不见”

scatter le year,connect(l) msymbol(x) mcolor(magenta) //x表示散点形状为x,颜色为magenta

//散点显示选项(marker_options)的设定

help marker_options

graph query symbolstyle

graph query colorstyle

graph query markersizestyle

//散点标签显示(marker_label_options)的设定

help marker_label_options

sysuse lifeexp.dta, clear

describe

list country lexp gnppc if region==2

scatter lexp gnppc if region==2, mlabel(country)

//尝试用mlabpos()选项调整标签的位置

scatter lexp gnppc if region==2, mlabel(country) mlabpos(9)

/*尝试利用mlabvposition(varname) 选项为某些特殊的观测值设定标签位置

为了

*/

generate pos=3

replace pos=12 if country == "Honduras"

replace pos=9 if country =="United States"

scatter lexp gnppc if region==2, mlabel(country) mlabv(pos)

/* 尝试利用改变坐标轴的覆盖范围来设定标签 */

//方法1 利用xscale(range())指定作图的区域

scatter lexp gnppc if region==2,

mlabel(country) mlabv(pos) xscale(range(-500,3500))

//方法2 利用plotregion(margin())来解决作图区域微小的变动

scatter lexp gnppc if region==2,

mlabel(country) mlabv(pos) plotregion(margin(l+9))

//连线选项(connect_options)的设定

//振荡选项(jitter_options)的设定

//由于数据点太密集,甚至产生重叠,需要将数据点轻微地挪动位置,jitter(#)

sysuse autornd,clear

describe

scatter mpg weight

scatter mpg weight,jitter(7)

//坐标轴尺度选项组(axis_scale_options)的设定

help axis_scale_options

//绘制变量lexp与取对数后的变量gnppc的散点图

sysuse lifeexp.dta,clear

scatter lexp gnppc

gen log_gnppc=log(gnppc)

scatter lexp log_gnppc

//another way

scatter lexp gnppc,xscale(log) //图形上与上面方法一样,但x轴刻度不同

//做散点图,并对比y轴刻度使用正常尺度与逆向尺度的异同

sysuse auto.dta,clear

scatter mpg weight

scatter mpg weight,yscale(rev)

//绘制完全没有任何坐标的散点图和有坐标刻度但没有坐标线的散点图

//首先,关掉坐标

sysuse auto.dta, clear

scatter mpg weight, yscale(off)

//去掉坐标线 保留刻度

scatter mpg weight, yscale(noline) xscale(off)

//分别绘制mpg和weight的标有大约5个和10个刻度标识的mpg和weight散点图

scatter mpg weight

scatter mpg weight, ylabel(#5) xlabel(#5)

scatter mpg weight, ylabel(#10) xlabel(#10)

//绘制mpg和weight散点图,要求y轴的刻度标识为10、15、20......45,x轴的刻度

scatter mpg weight,

ylabel(10(5)45) xlabel(1500 1970 2500(500)4500)

//绘制x轴大约有15个刻度,y轴大约有10个刻度的散点图

scatter mpg weight,ytick(#10) xtick(#15)

//绘制mpg和weight散点图中,x轴每两个主刻度之间有10个小刻度,y轴每两个主刻度之间有5个小刻度标识

scatter mpg weight, ymlabel(##5) xmtick(##10) //mtick刻度上有数字 xlabel没有

scatter mpg weight, ymlabel(##5) xmlabel(##5)

//绘制散点图中,x轴每两个主刻度之间大约有20个小刻度,y轴每两个主刻度之间有20个小刻度

scatter mpg weight, ymtick(#20,grid) xmtick(#20, grid gmax)

//根据是否为国产车分别绘制散点图,并要求y轴方向不出现网格线

scatter mpg weight, by(foreign) ylabel(, nogrid)

/* 时间序列散点图时的轴线刻度标识问题 */

sysuse uslifeexp, clear

scatter le year

scatter le year, c(l) xlabel(#10,grid)

scatter le year, c(l) xlabel(1900(10)2000,grid)

scatter le year, c(l) xlabel(1900 1918 1936 1950(20)2000, nogrid)

scatter le year, msymbol(x) lcolor (red) c(l) xlabel(1900 1918 1940(20)2000,grid)

line le year, lcolor(navy) lpattern(dot)

//example

sysuse "uslifeexp.dta", clear

//绘制散点图并添加图例

scatter le year, c(l) xlabel(1990 1918 1940(20)2000, grid) ///

lengend(on)

//绘制le_m le_f 散点图并添加图例,将图例分别改成"male"和"female"

//第一种改图例的方式是,改变变量的标签

//第二种方式是用legend修改标签,具体方法如下

scatter le_male le_female year, c(l) ///

legend(label(1 "Male") label(2 "Female"))

scatter le_male le_female year, c(l) legend(on)

scatter le_male le_female year, c(l) ///

lengend(on order(1 "male" 2 "female")) //另一种方式

//twoway可以绘制多张图形

help line

twoway (line le_male year) (line le_female year, lcolor(red) lpattern(dot)) ///

(line le_w year,lcolor(green) lpattern(-)), ///

legend(on order(1"Male"2"Female"3"White")) ///

col(1) ring(0) pos(4) title("标题") subtitle("我是图例"))

//ring(0)是把图例放在图里面,pos(4)表示4点钟方向

/*by选项的设定*/

// exmaple

help by_option

sysuse auto,clear

scatter mpg weight

//按照foreign绘制 散点图

scatter mpg weight, by(foreign)

//按照foreign分组绘制散点图,并添加一张包含所有观测值

scatter mpg weight, by(foreign,total)

//将绘制的图形改为一行排列

scatter mpg weight, by(foreign,total col(1))

//将绘制的图形的留白放在左下方

scatter mpg weight, by(foreign,total holes(3))

//将绘制的图形添加一个全国标题"My title"

scatter mpg weight, by(foreign,total title("My Title"))

//将绘制的图形中每个小图的标题去掉

scatter mpg weight, subtitle(" ") by(foreign, total title("my title"))

//将绘制图形的每个小图的标题位置更改

scatter mpg weight, subtitle(,ring(0) pos(10) nobexpand) by (foreign, title ("my title"))

//如果foreign变量没有标签,怎么办?

label drop origin

scatter mpg weight, by(foreign,total title("My Title"))

label define origin_v 0 "国产" 1 "进口"

label values foreign origin_v

scatter mpg weight, by(foreign,title ("My Title"))

twoway (scatter mpg weight if foreign==0) /*

*/(scatter mpg weight if foreign==1, msymbol(x)), /*

*/legend(order(1 "国产" 2 "进口"))

/* 如何将by和legend共同使用 */

sysuse auto,clear

//绘制散点和线性拟合复合图形,根据foreign分组,添加一个总体图

scatter mpg weight || lfit mpg weight ///

, by(foreign, row(1))

//将图例变为1列显示,放置4点钟方向

scatter mpg weight || lfit mpg weight ||, /*

*/legend(cols(1)) by (foreign, total legend(pos(4)))

//将图例放在2x2 的留白处

scatter mpg weight || lfit mpg weight ||,

*/ legend(rows(1)) by (foreign, total legend(at(4) pos(0)))

/* 轴线选择选项 axis_choice_options */

help axis_choice_options

//example

sysuse auto,clear

//绘制mpg, price and weight 散点图,要求两个y轴变量公用一个y轴

scatter mpg price weight

twoway(scatter mpg weight)(scatter price weight)

//绘制散点图,并使用两个y轴

twoway(scatter mpg weight)(scatter price weight, yaxis(2))

//每一个坐标轴添加刻度和标识,x轴大约10个刻度,左边的y轴大约8个刻度,右边的y轴

twoway (scatter mpg weight)(scatter price weight,yaxis(2)), /*

*/xlabel(1000(500)5000) ytick(#10,axis(2)) ylabel(#8,axis(1))

twoway (scatter mpg weight)(scatter price weight, yaxis(2)), /*

*/xlabel(1000(500)5000) ytick(#10,axis(2)) ///

ylabel(10 18 20(5)50, axis(1))

twoway (scatter mpg weight)(scatter price weight, yaxis(2)), /*

*/xlabel(1500(500)5000) ylabel(#10,axis(2)) ///

ylabel(10(5)50, angle(0) axis(1)) //angle用于调刻度的倾斜角度

//面积图

help graph twoway

help area

sysuse gnp96, clear

graph twoway area d.gnp96 date //d.gnp96代表对gnp96进行一阶差分后的值

gen dev_gnp=gnp96-l.gnp96

twoway(line gnp96 date)(area d.gnp96 date, yaxis(2))

twoway(line gnp96 date)(area dev_gnp date, yaxis(2))

twoway(line gnp96 date)(line dev_gnp date, lpattern(dot))

//

sysuse gnp96, clear

#delimit;

twoway area d.gnp96 date, xlabel(#20,angle(90))

ylabel(-100(50)200,angle(0))

ytitle("Billions of 1996 Dollars")

xtitle("")

subtitle("Change in US CNP",pos(11))

note("Source:US Department of Commerce, Bureau of Economocis")

;

#delimit cr

//分布图,直方图 graph histogram 和k密度图 graph twoway

help graph twoway

sysuse lifeexp, clear

twoway histogram le

twoway hist le, bin(10) //直方图"柱子"的个数

twoway hist le, width(5) //柱子的宽度

twoway hist le, gap(10) //柱子与柱子之间的间隙宽度

twoway hist le, horizontal //水平直方图

//条状图

help graph bar

help graph hbar //bar是垂直条状图,hbar是水平条状图

sysuse citytemp, clear

graph bar (mean) tempjuly tempjan //tempjuly tempjan均值

graph bar tempjuly tempjan, over(region) //根据地区的不同画tempjuly tempjan的均值(其默认值就是均值,所以不用加mean)

graph bar tempjuly tempjan, over(region) bargap(-30) //同一个region条与条之间距离为-30,即有所重叠

graph bar tempjuly tempjan, over(region) stack //将条堆叠起来

graph bar tempjuly tempjan, over(division) over(region) //先根据region分成四类,再根据division变量进一步划分

graph bar tempjuly tempjan, over(region,gap(10)) //region与region的条之间的距离

graph bar tempjuly tempjan, over(region,descending) //region的排列顺序是从大到小(数据中west对应4,south对应3,以此类推)

graph bar tempjuly tempjan, by(region) //分不同的region画四个图

//箱图

/* 图形保存选项 */

sysuse auto, clear

scatter mpg price weight

graph save fig1, replace //保存的图片可以继续进行编辑

//读取已存储图形

graph use fig1

//导出并存储为其他格式

graph export fig1.png, replace //导出图片时要保证该图片的窗口是打开的

//电子地图

findit spmap

help spmap

//

clear //首先要先清零数据再进行转码

unicode encoding set gb18030

unicode translate "china_label.dta"

use china_label, clear //translate乱码

//default example

use china_label,clear

gen x = uniform() //产生随机数,以此产生随机深浅

format x %9.3g

spmap x using "china_map.dta", ///

id(id) label(label(ename) xcoord(x_coord) ycoord(y_coord) size(*.66))

//example

use china_label.dta, clear

gen x = uniform()

spmap x using "china_map.dta",id(id) title("中国地图", size(*0.8)) ///

label(label(ename) xcoord(x_coord) ycoord(y_coord) size(*.8)) ///

plotregion(icolor(stone)) ///

graphregion(icolor(stone)) fc(Greens) clnumber(8) //clnumber表示8种不同深浅的绿色

oc(white ..) osize(medthin ..)

//example1

use china_label.dta, clear

tab name

replace name=subinstr(name,"省","", .)

replace name=subinstr(name,"市","", .)

replace name=subinstr(name,"回族自治区","", .)

replace name=subinstr(name,"壮族自治区","", .)

replace name=subinstr(name,"特别行政区","", .)

replace name=subinstr(name,"自治区","", .)

replace name=subinstr(name,"维吾尔","", .)

tab name

foreach x of numlist 1/5{

gen num`x"=uniform()

}

format x %9.3g

//ssc install spmap

foreach x of numlist 1/5{

spmap `x" using "china_map.dta",id(id) title("中国地图", size(*0.8)) ///

label(label(ename) xcoord(x_coord) ycoord(y_coord) size(*.8)) ///

plotregion(icolor(stone)) ///

graphregion(icolor(stone)) ///

fc(Greens) clnumber(8) oc(white ..) osize(medthin ..)

graph export "china0`x".png", replace

}

北有云溪
画图是Stata的强项之一,不是因为直接输出的图很好看,而是因为功能强大,图中的绝大部分元素都可以进行调整。
建议修改legend, xlabel, ylabel, graphregion, plotregion等选项。比如一个简单的调整
, ylabel(#5, angle(horizontal) nogrid) xlabel(0(100)800) legend(rows(2)) graphr(style(plotregion))

相关推荐

想问下MATLAB里 ‘Markersize’ 设置的值是‘Marker_size’是什么意思

marker是图上画上点的地方表上符号,不如点,方框,圆框,十字,星号,等等后面的size就是其大小了,不知道值的话,可以画完图点编辑框上面的箭头,然后双击画的图,下面出现属性框,marker项后面的数字下拉菜单就是size,选择合适的大小,今后就用这个值就行。默认的是6(见附图)画图的命令是:plot([1,2,3,4],[2,5,6,9],"-pentagram","markersize",35)按下面的表pentagram是五角星。下面是画图的颜色和线型,matlab中画图的颜色字母颜色标点线型m粉红·点线r大红++字线y黄色○圈线g绿色××线c亮蓝-实线b蓝色*星形线w白色:虚线k黑色-·(--)点划线matlab6.1线形:[+|o|*|.|x|square|diamond|v|^|>|<|pentagram|hexagram]square正方形diamond菱形pentagram五角星hexagram六角星
2023-07-19 07:12:431

matlab怎么把点加粗(就是看上去大一点)

x=1:6;y=sqrt(x);plot(x,y,".","markersize",50)
2023-07-19 07:13:003

matlab的marker(比如"o"、"+")怎样才能变粗一点呢?

写的时候plot(x,y,"+","MarkerSize",7)假如先这么写,演算一下再加个linewidth:plot(x,y,"+","MarkerSize",7,"linewidth",2)或者plot(x,y,"--+","MarkerSize",7,"linewidth",2)这个时候再看发现确实是粗了,但是我们第一个也没写要画线line啊。。所以可能两者是一致的,可以试试
2023-07-19 07:13:092

matlab中绘制的图形线条怎样加粗呀

应该对你有帮助的!很高兴为您解答。可以通过,调节plot函数中的LineWidth参数来实现。有LineWidth这个参数可以设置,下面是matlab官方的例子x=-pi:pi/10:pi;y=tan(sin(x))-sin(tan(x));plot(x,y,"--rs","LineWidth",2,..."MarkerEdgeColor","k",..."MarkerFaceColor","g",..."MarkerSize",10)其中,MATLAB对曲线的线型和颜色有许多选择,标注的方法是在每一对数组后加一个字符串参数,说明如下:线型线方式:-实线:点线-.虚点线--波折线。线型点方式:.圆点+加号*星号xx形o小圆颜色:y黄;r红;g绿;b蓝;w白;k黑;m紫;c青.
2023-07-19 07:13:172

matlab中如何合理设定线条宽度?

设置线宽度(LineWidth),标记点的边缘颜色(MarkerEdgeColor),填充颜色 (MarkerFaceColor)及标记点的大小(MarkerSize)例:设置绘图线的线型,颜色,宽度,标记 点的颜色及大小:t=0:pi/20:pi;y=sin(4*t).*sin(t)/2;plot(t,y,"-bs","LineWidth",2,... %设置线的宽度为2"MarkerEdgeColor","k",... %设置标记点边缘颜色为黑色"MarkerFaceColor","y",... %设置标记点填充颜色为黄色"MarkerSize",10) %设置标记点的尺寸为10
2023-07-19 07:13:301

matlab 曲线拟合怎样修改marker大小?

在图上点选之 会弹出框可以修改或者 在编程中定义marker 时,附加大小,如("s ",2)
2023-07-19 07:13:393

matlab中如何注释掉一段?

使用 %
2023-07-19 07:13:494

如何用matlab中subplot的使用

subplot就是将Figure中的图像划分为几块,每块当中显示各自的图像,有利于进行比较。比如Example里面有这样的例子income = [3.2 4.1 5.0 5.6];outgo = [2.5 4.0 3.35 4.9];subplot(2,1,1); plot(income)subplot(2,1,2); plot(outgo)先用subplot划分Figure为2*1的区域,上面一个显示income,下面一个显示outgo。subplot的格式为(行数,列数,第几个区域的位置),不加逗号也是可以的。
2023-07-19 07:15:141

如何用matlab将坐标中的点描粗

假设你用的是 h=plot(x,y,"o-")上边画出的图应该是用线穿起来的圆圈,要想让点变大点呢,就: set(h,"MarkerSize",10);%默认大小为6;要想让圆圈的线变粗点呢,就: set(h,"LineWidth",2);%默认宽度是0.5;如果把边缘的颜色变一下呢,就: set(h,"MarkerEdgeColor","g");%默认颜色是蓝色;如果想给点涂上颜色呢,就: set(h,"MarkerFaceColor","g");%默认颜色是白色。还有问题么?~按照你这个追问,我回答不了,图像的变形不是随便几句就能搞定的事哦
2023-07-19 07:16:011

怎么用MATLAB在数轴上标上点和数字(如图)

势必会让他和你染头发
2023-07-19 07:16:112

matlab如何画三维图

一段标准的代码段进行展示如何构造出相应的数据。x=-1:0.1:1;y=-1:0.1:1;[xx,yy]=meshgrid(x,y);zz=xx.*exp(-xx.^2-yy.^2);surf(xx,yy,zz);12345其中meshgrid的作用就是生成网格(矩阵)数据xx,yy。matlab学习知识
2023-07-19 07:17:016

matlab如何做出动态图?

每画好一个图后drawnow一下(或者pause一下指定的时间),再画下一个图,用for循环画。下面只是一个小例子,你自己依葫芦画瓢即可n=-2:0.01:2;x=linspace(-pi,pi);for k=n plot(x,sin(k*x)); drawnow;end
2023-07-19 07:18:203

matlab中%是什么意思

注释用的!
2023-07-19 07:18:296

matlab中resnorm什么意思

x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;lb、ub为解向量的下界和上界 ,若没有指定界,则lb=[ ],ub=[ ];options为指定的优化参数;fun为拟合函数,其定义方式为:x = lsqcurvefit(@myfun,x0,xdata,ydata),其中myfun已定义为 function F = myfun(x,xdata)F = … % 计算x处拟合函数值fun的用法与前面相同;resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;residual=fun(x,xdata)-ydata,即在x处的残差;exitflag为终止迭代的条件;output为输出的优化信息;lambda为解x处的Lagrange乘子;jacobian为解x处拟合函数fun的jacobian矩阵。
2023-07-19 07:19:081

matlab中legend内容如何改变大小

legend("","fontsize",15)
2023-07-19 07:19:252

matlab中10的负几次方怎么表示?

直接使用10^x,10e5=10^6<p>阶跃函数的命令是heaviside</p><p>此命令得到的值在0处是一个“非数”NaN</p><p>clear all;clc;n=-5:25;fn=heaviside(n-10);plot(n,fn,".r","Markersize",15);grid on;hold on;</p><p></p><p></p><p>如果你想自己定义n=10处的数值,比如0.5</p><p>倒是可以画图,但命令实际给不出来的。也不合规矩的,是吧。</p><p>只是给你说一下。后面可以加一句:</p><p>plot(10,0.5,".r","Markersize",15);</p><p></p>
2023-07-19 07:19:341

跳棋棋盘怎么画

问题一:大哥们这跳棋棋盘怎么画啊  没有尺寸。这东西真画起来应该还是蛮简单的,都是基本功。画个六角,除料一条边上三角,然后阵列就等到除了孔外的基本样子了。孔的话嘛,不知道直接填充阵列行不行?你可以试试。 问题二:跳棋棋盘怎么画 画两个大的等边三角形,然后两个三角形交叉。 问题三:跳棋格子图怎么画 问题四:用matlab怎么画类似跳棋的棋盘图? clc;clear %p=zeros(6,2); R=10; p=[R*cos((0:5)"*pi/3+pi/6),R*sin((0:5)"*pi/3+pi/6)]; plot(p(:,1),p(:,2),"b.","markersize",60) hold on axis equal axis off e1=(p(5,:)-p(1,:))/12; e2=(p(5,:)-p(3,:))/12; for i=1:12 p1=(i-1)*e1+p(1,:); p2=(i-1)*e2+p(3,:); ep1p2=(p2-p1)/(12-i+1); for j=0:12-i+1 pp=p1+ep1p2*j; plot(pp(1),pp(2),"b.","markersize",40) end end e1=(p(6,:)-p(2,:))/12; e2=(p(6,:)-p(4,:))/12; for i=1:12 p1=(i-1)*e1+p(2,:); p2=(i-1)*e2+p(4,:); ep1p2=(p2-p1)/(12-i+1); for j=0:12-i+1 pp=p1+ep1p2*j; plot(pp(1),pp(2),"b.","markersize",40) end end 问题五:画跳棋图纸 如图所示,跳棋就是图片这样的。 问题六:六角跳棋图纸怎么画,里面线跳怎么画 最后一步就是在各行之间再画一道线即可 问题七:跳棋,画出每个棋子跳的新位置。 您好,您说的是这图片这样的跳棋吗?这样的跳棋开局的时候不是每个棋子都能跳,是第三行的棋子跳过第四行的棋子。您还有什么不明白的,只要您再问我,我一定努力给您讲解。 问题八:登山小游戏跳棋怎么画 你好,下面这个站点的小游戏比较新,种类也比较多,要什么都有哦。h5uc/?=wd 问题九:自制亲子棋跳棋怎么做 取一盆水,将废旧纸放入,浸泡两天 两天后,废纸已被浸泡成纸浆;将纸浆放入圆锥形模具,压紧成型,跳棋需30个,可以多压制几个,备用(防以后丢失或损坏,(*^__^*) 嘻嘻……)。压制好后晾干。 晾干后,上色,每种颜色涂10个 画棋盘,用直尺、圆规,可以先用铅笔,画好后再用彩笔涂好六个角区域。完成啦!
2023-07-19 07:19:421

matlab画图时怎么给多个点(有坐标)标注数字序号啊?

X=[1 2 3 4 5];Y=[1.2 2.3 3 1.4 5];y1={"a" "b" "c" "d" "r"};%plot_number 以绘制X,Y二维散点图并标出序号plot(X,Y,"r.") %绘制散点图hold onfor i=1:max(size(X))c = y1(i);%字符text(X(i),Y(i),c);%在图上显示文字endhold off
2023-07-19 07:19:505

用matlab拟合一组数据,要求得出函数表达式

拟合函数表达式是咋么的,是多项式还是指数,是1次函数还是二次函数??
2023-07-19 07:20:512

matlab中如何将图线加粗

QX=plot(x,y); %绘图xlabel("xxxxxx");ylabel("yyyyy");title("ttttt");set(QX,"LineWidth",1.0); %将图中的曲线加粗,1.0表示线的粗细set(gca,"FontSize",20); %改变图中坐标的大小 20表示坐标显示的大小set(get(gca,"XLabel"),"FontSize",20); %改变图中x轴的说明文字的大小 20表示说明文字的大小set(get(gca,"YLabel"),"FontSize",20); %改变图中y轴的说明文字的大小 20表示说明文字的大小set(get(gca,"title"),"FontSize",20); %改变图中title说明文字的大小 20表示说明文字的大小print(1,"-djpeg","D:plxy.jpeg"); %保存图像
2023-07-19 07:22:402

减法聚类如何用Python实现

下面是一个k-means聚类算法在python2.7.5上面的具体实现,你需要先安装Numpy和Matplotlib:from numpy import *import timeimport matplotlib.pyplot as plt# calculate Euclidean distancedef euclDistance(vector1, vector2):return sqrt(sum(power(vector2 - vector1, 2)))# init centroids with random samplesdef initCentroids(dataSet, k):numSamples, dim = dataSet.shapecentroids = zeros((k, dim))for i in range(k):index = int(random.uniform(0, numSamples))centroids[i, :] = dataSet[index, :]return centroids# k-means clusterdef kmeans(dataSet, k):numSamples = dataSet.shape[0]# first column stores which cluster this sample belongs to,# second column stores the error between this sample and its centroidclusterAssment = mat(zeros((numSamples, 2)))clusterChanged = True## step 1: init centroidscentroids = initCentroids(dataSet, k)while clusterChanged:clusterChanged = False## for each samplefor i in xrange(numSamples):minDist = 100000.0minIndex = 0## for each centroid## step 2: find the centroid who is closestfor j in range(k):distance = euclDistance(centroids[j, :], dataSet[i, :])if distance < minDist:minDist = distanceminIndex = j## step 3: update its clusterif clusterAssment[i, 0] != minIndex:clusterChanged = TrueclusterAssment[i, :] = minIndex, minDist**2## step 4: update centroidsfor j in range(k):pointsInCluster = dataSet[nonzero(clusterAssment[:, 0].A == j)[0]]centroids[j, :] = mean(pointsInCluster, axis = 0)print "Congratulations, cluster complete!"return centroids, clusterAssment# show your cluster only available with 2-D datadef showCluster(dataSet, k, centroids, clusterAssment):numSamples, dim = dataSet.shapeif dim != 2:print "Sorry! I can not draw because the dimension of your data is not 2!"return 1mark = ["or", "ob", "og", "ok", "^r", "+r", "sr", "dr", "<r", "pr"]if k > len(mark):print "Sorry! Your k is too large! please contact Zouxy"return 1# draw all samplesfor i in xrange(numSamples):markIndex = int(clusterAssment[i, 0])plt.plot(dataSet[i, 0], dataSet[i, 1], mark[markIndex])mark = ["Dr", "Db", "Dg", "Dk", "^b", "+b", "sb", "db", "<b", "pb"]# draw the centroidsfor i in range(k):plt.plot(centroids[i, 0], centroids[i, 1], mark[i], markersize = 12)plt.show()
2023-07-19 07:22:501

.txtx 是什么格式

程序如下(假设你的txt文件的名称为:datas.txt,自己把这个txt文件放到路径下面): A=load("datas.txt"); plot(A(:,1),A(:,2),"s","markersize",5); grid on xlabel("....自己写...") ylabel(".....自己写....") title("......自己写......")
2023-07-19 07:22:571

怎么用matlab画出一个函数的散点图,并按照自己的需求使个别点显示不同的颜色?

close all; clear all;x = -10:10;y = sin(x);figure;hold on;plot(x,y,"color","r");for n = 1:length(x)if( (x(n)==-6) || (x(n)==-2) || (x(n)==0) || (x(n)==10))plot(x(n),y(n), "Marker",".", "MarkerSize",20, "color","b");elseplot(x(n),y(n),"Marker","o", "MarkerSize",7, "color","r")endend拓展:1、MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。2、MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
2023-07-19 07:23:071

用MATLAB 实现k-means算法数据 data随机产生100个数。 分成两类,即k=2.代码

%随机获取100个点X =[randn(100,2)+ones(100,2);randn(100,2)+[ones(100,1),-ones(100,1)]];opts =statset("Display","final");%调用Kmeans函数%X N*P的数据矩阵%Idx N*1的向量,存储的是每个点的聚类标号%Ctrs K*P的矩阵,存储的是K个聚类质心位置%SumD 1*K的和向量,存储的是类间所有点与该类质心点距离之和%D N*K的矩阵,存储的是每个点与所有质心的距离;[Idx,Ctrs,SumD,D] =kmeans(X,2,"Replicates",2,"Options",opts);%画出聚类为1的点。X(Idx==1,1),为第一类的样本的第一个坐标;X(Idx==1,2)为第二类的样本的第二个坐标plot(X(Idx==1,1),X(Idx==1,2),"r.","MarkerSize",14)hold onplot(X(Idx==2,1),X(Idx==2,2),"b.","MarkerSize",14)%绘出聚类中心点,kx表示是圆形plot(Ctrs(:,1),Ctrs(:,2),"kx","MarkerSize",14,"LineWidth",4)plot(Ctrs(:,1),Ctrs(:,2),"kx","MarkerSize",14,"LineWidth",4)plot(Ctrs(:,1),Ctrs(:,2),"kx","MarkerSize",14,"LineWidth",4)legend("Cluster 1","Cluster2","Center 1","Center 2","Location","NW")CtrsSumD
2023-07-19 07:24:001

弱弱地问一下,matlab画出来的散点图的点的大小怎么调啊...

x=1:4;y=x;scatter(x,y,200)%200是随便给的,自己可调,点的形状,颜色可在后续的属性中添加
2023-07-19 07:24:102

matlab的问题,大神们帮我看看这个椭圆为什么画不出来啊?

是的,函数句柄的定义方式其实和函数是一样的要加点的:f=@(x,y)(x-c1).^2/a^2+(y-c2).^2/b^2-1是对的
2023-07-19 07:24:501

用Matlab做画星形线(astroid)的动画

做如下改动:(1)将x,y全用x(k),y(k)表示(2)新生成变量tx,ty(3)用tx,ty画星形线程序在附件结果如下:
2023-07-19 07:25:091

在matlab中怎样将MarkerSize改得较小。

可以在画图的properties的选项中进行设置。如果是为了比较明显的显示出标识,又不至于标识太大,可以考虑改变标识与线段的形状和颜色。
2023-07-19 07:25:261

相同程序在不同版本的MATLAB上得到的图片不一样

plot (x,y,"markersize",2)change 2 to a smaller number will result 细线条.网格虚线的图 "--" Dashed line"-." Dash-dot lineplot (x,y,"-.","markersize",2)
2023-07-19 07:25:351

matlab 画图 怎样在全部可行域输出一种符号;

如果你是x1,x2都取一个的话,x1=rand(1,10);x2=rand(1,10);[xx,yy]=meshgrid(x1,x2);plot(xx,yy,"d"); % if 4*q1(i)>q2(j) %我记得好像这样是不会有效果的!你可以在循环中保存数据,计算完了一次%作图,% if (a1(i)<=a2(i,j) & a1(i)<=a31(i,j)) %不能有;% plot(q1(i),q2(j),"s","markersize",10)% elseif (a2(i,j)<=a1(i) & a2(i,j)<=a31(i,j))% plot(q1(i),q2(j),"mh","markersize",10)% else plot(q1(i),q2(j),"mn","markersize",10)% end% end% hold on 一个是在循环中,不要被覆盖!% end
2023-07-19 07:25:451

matlab中绘制的图形线条怎样加粗

方法:设置plot()函数的"LineWidth"参数即可设置线条的粗细。另外,还可以设置绘图曲线的颜色,散点样式等:"MarkerEdgeColor"—散点的边框颜色"MarkerFaceColor"—散点的填充颜色"MarkerSize"—散点的大小下面进行实例演示:1、打开matlab,输入如下代码计算绘图的散点数据>> x = 0:pi/20:2*pi;>> y1 = sin(x);>> y2 = 0.5*sin(x);2、画图并设置线条粗细>> plot(x,y,"LineWidth",4) % 设置线条宽度为43、设置散点样式>> plot(x,y*0.5,"bd:","LineWidth",4","MarkerEdgeColor","r","MarkerFaceColor","y","MarkerSize",10)设置三点边框为红色,填充黄色,大小为104、绘图效果如下
2023-07-19 07:25:531

matlab中如何合理设定线条宽度

设置线宽度(LineWidth),标记点的边缘颜色(MarkerEdgeColor),填充颜色 (MarkerFaceColor)及标记点的大小(MarkerSize)例:设置绘图线的线型,颜色,宽度,标记 点的颜色及大小:t=0:pi/20:pi;y=sin(4*t).*sin(t)/2;plot(t,y,"-bs","LineWidth",2,... %设置线的宽度为2"MarkerEdgeColor","k",... %设置标记点边缘颜色为黑色"MarkerFaceColor","y",... %设置标记点填充颜色为黄色"MarkerSize",10) %设置标记点的尺寸为10
2023-07-19 07:26:291

matlab中如何使起点坐标变为(0,0),或者把X轴上移?高分求教

改成set(gca,"ylim",[0 10]);但是这样y2=[-0.52 2.10 2.82 6.20 ];就画不出来了-0.52
2023-07-19 07:26:421

阶跃示踪法怎么求Ft和Et

计算FT 和DTFT 的方法% 显示连续时间信号subplot(221); plot(t*1000,xa); grid;xlabel("t"); ylabel("xa(t)"); title("连续时间信号");% 计算付里叶积分并显示fmax = 2000; Wmax=2*pi*fmax; K=1000; k=-K:1:K; W=k*Wmax/K;% Xa=xa*exp(-j*t"*W)*Dt; % Xa 是行向量(第12行)Xa=exp(-j*W"*t)*xa"*Dt; % Xa 是列向量(第13行)subplot(222); plot(W/(2*pi),Xa); grid; % 以f(Hz) 作为频率轴xlabel("归一化频率"); ylabel("Xa(w)"); title("付里叶积分");% 对连续时间信号采样Ts=0.0002; n=-25:1:25; x = exp(-1000*abs(n*Ts));subplot(223); H = stem(n*Ts*1000,x); set(H,"markersize",2); grid; axis(-5,5,0,1.1);xlabel("n"); ylabel("x(n)"); title("对连时间信号采样");% 计算DTFT 并显示fs = 1/Ts; f = 2000; K=1000; k=-K:1:K; N = 200; w=(2*pi*(f/fs)*k/K);X=x*exp(-j*n"*w); % X 是行向subplot(224);plot(w*fs/(2*pi),X*Ts); grid; % 以f(Hz) 作为频率轴xlabel("归一化频率"); ylabel("X * Ts"); title("离散付里叶变换");% 显示计算误差% a = abs(Xa)-abs(X*Ts); % Xa 和a 都是行向量(第23行)
2023-07-19 07:27:021

求解Matlab问题,希望可以具体

clc,clear % 清屏x=[7.0 10.5 13.0 17.5 34 40.5 44.5 48 56 61 68.5 76.5 80.5 91 96 101 104 106 111.5 118 123.5 136.5 142 146 150 157 158];y1=[44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68];y2=[44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68];plot(x,y1,"k.","markersize",25); % 画出原数据的图像hold on % 将多组数据显示在一张图像里plot(x,y2,"k.","markersize",25);hold ont=7:0.5:158;u1=interp1(x,y1,t,"cubic"); % 插值(cubic意为三次函数差值)plot(t,u1); % 画出插值后的图像hold onu2=interp1(x,y2,t,"cubic");plot(t,u2);S1=[trapz(x,y2)-trapz(x,y1)]*2222*2222 % trapz意为采用梯形法求积分,积分后得到y2与y1之间围成的面积S2=[trapz(t,u2)-trapz(t,u1)]*2222*2222
2023-07-19 07:27:092

c++将一组数据极坐标转换为直角坐标Xi=pi*cosRi ,Yi=Pi*sinRi,Xii=X0+Xicosa-Yisina, Yii=Y0+Xisina+Yicosa

check if you can play with the following code:r=0:5:460;t=0:0.01:2*pi;figure(1);for i=0:1:360; hold off plot(0,0,".","markersize",5); hold on plot(max(r)*cos(t),max(r)*sin(t),"g-.","markersize",1,"linewidth",1); plot(max(r)/2*cos(t),max(r)/2*sin(t),"g-.","markersize",1,"linewidth",1); axis([-1,1,-1,1]*max(r)*11/10,"square"); whitebg([0 0 0]) plot(r*cos(i/360*2*pi),r*sin(i/360*2*pi),".","color","g","markersize",1); pause(0.02); drawnow();end;
2023-07-19 07:27:161

用matlab绘制电力线,都为正电荷时能够出来图形,异号电荷及负电荷时根本出不来图形。问题到底出在哪的呀?

fgggggggggg
2023-07-19 07:27:322

怎样用MATLAB解决优化问题????

% 主程序%遗传算法主程序%Name:genmain.m%author:杨幂clearclf%%初始化popsize=50; %群体大小chromlength=30; %字符串长度(个体长度)pc=0.6; %交叉概率pm=0.1; %变异概率pop=initpop(popsize,chromlength); %随机产生初始群体%%开始迭代for i=1:20 %20为迭代次数[objvalue]=calobjvalue(pop); %计算目标函数fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度[newpop]=selection(pop,fitvalue); %复制[newpop]=crossover(pop,pc); %交叉[newpop]=mutation(pop,pm); %变异[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值y(i)=max(bestfit);%储存最优个体适应值n(i)=i;pop5=bestindividual;%储存最优个体%解码x1(i)=decodechrom(pop5,1,chromlength/2)*2/32767;x2(i)=10+decodechrom(pop5,chromlength/2+1,chromlength/2)*10/32767;pop=newpop;%将新产生的种群作为当前种群end%%绘图figure(1)%最优点变化趋势图i=1:20;plot(y(i),"-r*")xlabel("迭代次数");ylabel("最优个体适应值");title("最优点变化趋势");legend("最优点");grid onfigure(2)%最优点分布图[X1,X2]=meshgrid(0:0.1:2,10:0.1:20);Z=X1.^2+X2.^2;mesh(X1,X2,Z);xlabel("自变量x1"),ylabel("自变量x2"),zlabel("函数值f(x1,x2)");hold onplot3(x1,x2,y,"ro","MarkerEdgeColor","r","MarkerFaceColor","r","MarkerSize",5)title("最优点分布");legend("最优点");hold off[z index]=max(y); %计算最大值及其位置x5=[x1(index),x2(index)]%计算最大值对应的x值z
2023-07-19 07:27:541

MATLAB报错

plot(X(1,:),X(2,:),".","markersize",30)这里引用了X这个矩阵第一行和第二行,要用这些数据画图,那X什么地方被赋值过了?你的代码里面从来没对X赋值。所以报错未定义的变量X (Undefined variable X.)
2023-07-19 07:28:031

matlab 线性拟合

指数拟合,设y=Ce^(Ax)function z=E(u)A=u(1);C=u(2);Z=(C-18).^2+(C.*ecp(20A)-17.586.^2+(C.*exp(40*A)-17.136).^2+......+(C.exp(190*A)-13.896).^2;再然后用fmins("E",[1,1])求Z的最小值可以得到A和C的值
2023-07-19 07:28:163

如何在MATLAB中插入地图,并在其中画图?

程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clf;t=6*pi*(0:100)/100;y=1-exp(-0.3*t).*cos(0.7*t);plot(t,y,"r-","LineWidth",3)%<3>hold ontt=t(find(abs(y-1)>0.05));ts=max(tt);%<5>plot(ts,0.95,"bo","MarkerSize",10)%<6>hold offaxis([-inf,6*pi,0.6,inf])set(gca,"Xtick",[2*pi,4*pi,6*pi],"Ytick",[0.95,1,1.05,max(y)])%<9>set(gca,"XtickLabel",{"2*pi";"4*pi";"6*pi"})%<10>set(gca,"YtickLabel",{"0.95";"1";"1.05";"max(y)"})%<11>grid ontext(13.5,1.2,"fontsize{12}{alpha}=0.3")%<13>text(13.5,1.1,"fontsize{12}{omega}=0.7")%<14>cell_string{1}="fontsize{12}uparrow";%<15>cell_string{2}="fontsize{16} fontname{隶书}镇定时间";cell_string{3}="fontsize{6}";cell_string{4}=["fontsize{14} mt_{s} = "num2str(ts)];%<18>text(ts,0.85,cell_string,"Color","b","HorizontalAlignment","Center")%<19>title("fontsize{14}it y = 1 - e^{ -alpha t}cos{omegat}")%<20>xlabel("fontsize{14} ft ightarrow")ylabel("fontsize{14} fy ightarrow")%<22>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2023-07-19 07:29:072

matlab拟合一组数据到某一函数

可以使用polyfit2d,polyval2d这两个函数来解决使用方法参考polyfit2dtest到网上搜索这三个函数名,源文件就可以下载到了
2023-07-19 07:29:403

matlab中如何合理设定线条宽度

设置线宽度(LineWidth),标记点的边缘颜色(MarkerEdgeColor),填充颜色 (MarkerFaceColor)及标记点的大小(MarkerSize)例:设置绘图线的线型,颜色,宽度,标记 点的颜色及大小:t=0:pi/20:pi;y=sin(4*t).*sin(t)/2;plot(t,y,"-bs","LineWidth",2,... %设置线的宽度为2"MarkerEdgeColor","k",... %设置标记点边缘颜色为黑色"MarkerFaceColor","y",... %设置标记点填充颜色为黄色"MarkerSize",10) %设置标记点的尺寸为10
2023-07-19 07:29:502

matlab最小二乘法多项式拟合

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。最小二乘法原理:u2002在我们研究两个变量(x,y)之间的相互关系时,通常可以得到一系列成对的数据(x_{1},y_{1}.x_{2},y_{2}...x_{m},y_{m});将这些数据描绘在x-y直角坐标系中,若发现这些点在一条直线附近,可以令这条直线方程如(式1-1)。 _{}:代表下标,^{}:代表上标。y = a_{0}x+a_{1} u2002(式1-1)u2002u2002u2002其中:a0、a1u2002是任意实数2 常见拟合曲线:直线:u2002u2002 u2002y = a_{0}x+a_{1}u2002u2002u2002u2002u2002u2002多项式:y=a_{0}x^{n} + a_{1}x^{n-1} + a_{2}x^{n-2} + …+a_{n}一般次数不易高于3。3 matlab函数polyfit函数基于最小二乘法,使用的基本格式为:p = polyfit(x,y,n)[p,S] = polyfit(x,y,n)[p,S,mu] = polyfit(x,y,n)注:其中每个命令中的n为多项式拟合的次数,当n为1时,即为一次拟合(很多情况下等价于一元线性回归)。p是n+1维参数向量p(1),p(2)….那么拟合后对应的多项式即为p(1)*x^n + p(2)*x^(n-1) +…+ p(n)*x + p(n+1)。S是规模为1×1的结构数组,包括R(系数矩阵的QR分解的上三角阵),df(自由度),normr(拟合误差平方和的算术平方根)。mu-包含两个值 mean(x)均值,std(x)标准差。求出p之后我们需要作出拟合函数,那么只需要使用命令:Q=polyval(p,x)然后plot出x和Q即可。另外需要强调一点的是,多项式拟合不是拟合次数越高越好,而是残差越小越好。往往需要在回归分析的时候给出相关系数(correlation coefficient),实际上也很简单,我们可以使用命令:r=corrcoef(x,y);这样得到的r即为相关系数矩阵,其中r(1,2)=r(2,1)为相关系数,其值在[-1,1]之间,1表示最大程度的正相关,-1表示最大程度的负相关。相关系数绝对值越靠近1,线性相关性质越好,根据数据描点画出来的函数-自变量图线越趋近于一条平直线,拟合的直线与描点所得图线也更相近。4 举例1. 已知观测数据为:X:0 1 2 3 4 5 6 7 8 9 10Y:-0.447 1.987 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2用多项式曲线拟合这些数据点:Matlab 代码:clear all; close all; clc;x=0:1:10;y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.2];plot(x,y,"k.","markersize",25)hold on %图形保持功能axis([0 13 -2 16]) %坐标轴范围order=2; %阶数(一般不要超过3,可以更改确定)[p s ]=polyfit(x,y,order);t=0:1:12;Q=polyval(p,t);plot(t,Q,"r"); %画出图形r=corrcoef(x,y); %相关系数
2023-07-19 07:29:581

怎样用matlab作聚类分析啊?求操作T_T T_T

展示如何使用MATLAB进行聚类分析分别运用分层聚类、K均值聚类以及高斯混合模型来进行分析,然后比较三者的结果生成随机二维分布图形,三个中心% 使用高斯分布(正态分布)% 随机生成3个中心以及标准差s = rng(5,"v5normal");mu = round((rand(3,2)-0.5)*19)+1;sigma = round(rand(3,2)*40)/10+1;X = [mvnrnd(mu(1,:),sigma(1,:),200); ... mvnrnd(mu(2,:),sigma(2,:),300); ... mvnrnd(mu(3,:),sigma(3,:),400)];% 作图P1 = figure;clf;scatter(X(:,1),X(:,2),10,"ro");title("研究样本散点分布图") K均值聚类% 距离用传统欧式距离,分成两类[cidx2,cmeans2,sumd2,D2] = kmeans(X,2,"dist","sqEuclidean");P2 = figure;clf;[silh2,h2] = silhouette(X,cidx2,"sqeuclidean"); 从轮廓图上面看,第二类结果比较好,但是第一类有部分数据表现不佳。有相当部分的点落在0.8以下。分层聚类eucD = pdist(X,"euclidean");clustTreeEuc = linkage(eucD,"average");cophenet(clustTreeEuc,eucD);P3 = figure;clf;[h,nodes] = dendrogram(clustTreeEuc,20);set(gca,"TickDir","out","TickLength",[.002 0],"XTickLabel",[]);可以选择dendrogram显示的结点数目,这里选择20 。结果显示可能可以分成三类重新调用K均值法改为分成三类[cidx3,cmeans3,sumd3,D3] = kmeans(X,3,"dist","sqEuclidean");P4 = figure;clf;[silh3,h3] = silhouette(X,cidx3,"sqeuclidean"); 图上看,比前面的结果略有改善。将分类的结果展示出来P5 = figure;clfptsymb = {"bo","ro","go",",mo","c+"};MarkFace = {[0 0 1],[.8 0 0],[0 .5 0]};hold onfor i =1:3 clust = find(cidx3 == i); plot(X(clust,1),X(clust,2),ptsymb{i},"MarkerSize",3,"MarkerFace",MarkFace{i},"MarkerEdgeColor","black"); plot(cmeans3(i,1),cmeans3(i,2),ptsymb{i},"MarkerSize",10,"MarkerFace",MarkFace{i});endhold off 运用高斯混合分布模型进行聚类分析分别用分布图、热能图和概率图展示结果 等高线% 等高线options = statset("Display","off");gm = gmdistribution.fit(X,3,"Options",options);P6 = figure;clfscatter(X(:,1),X(:,2),10,"ro");hold onezcontour(@(x,y) pdf(gm,[x,y]),[-15 15],[-15 10]);hold offP7 = figure;clfscatter(X(:,1),X(:,2),10,"ro");hold onezsurf(@(x,y) pdf(gm,[x,y]),[-15 15],[-15 10]);hold offview(33,24)热能图cluster1 = (cidx3 == 1);cluster3 = (cidx3 == 2);% 通过观察,K均值方法的第二类是gm的第三类cluster2 = (cidx3 == 3);% 计算分类概率P = posterior(gm,X);P8 = figure;clfplot3(X(cluster1,1),X(cluster1,2),P(cluster1,1),"r.")grid on;hold onplot3(X(cluster2,1),X(cluster2,2),P(cluster2,2),"bo")plot3(X(cluster3,1),X(cluster3,2),P(cluster3,3),"g*")legend("第 1 类","第 2 类","第 3 类","Location","NW")clrmap = jet(80); colormap(clrmap(9:72,:))ylabel(colorbar,"Component 1 Posterior Probability")view(-45,20);% 第三类点部分概率值较低,可能需要其他数据来进行分析。% 概率图P9 = figure;clf[~,order] = sort(P(:,1));plot(1:size(X,1),P(order,1),"r-",1:size(X,1),P(order,2),"b-",1:size(X,1),P(order,3),"y-");legend({"Cluster 1 Score" "Cluster 2 Score" "Cluster 3 Score"},"location","NW");ylabel("Cluster Membership Score");xlabel("Point Ranking"); 通过AIC准则寻找最优的分类数高斯混合模型法的最大好处是给出分类好坏的标准AIC = zeros(1,4);NlogL = AIC;GM = cell(1,4);for k = 1:4 GM{k} = gmdistribution.fit(X,k); AIC(k)= GM{k}.AIC; NlogL(k) = GM{k}.NlogL;end[minAIC,numComponents] = min(AIC); 按AIC准则给出的最优分类数为: 3 对应的AIC值为: 8647.63后记(1)pluskid指出K均值算法的初值对结果很重要,但是在运行时还没有发现类似的结果。也许Mathworks对该算法进行过优化。有时间会仔细研究下代码,将结果放上来。分享: 56喜欢4赠金笔阅读(21209)┊ 评论 (4)┊ 收藏(1) ┊转载原文 ┊ 喜欢▼ ┊打印┊举报前一篇:[转载]拉普拉斯矩阵后一篇:[转载]用matlab做聚类分析
2023-07-19 07:30:081

MATLAb如何设置坐标显示单位长度

查查教程
2023-07-19 07:30:164

matlab 画图

plot(t0,kkk(1,:),"ks","MarkerSize",4);hold on;plot(t0,kkk(2,:),"r","MarkerSize",4);hold on;plot(t0,kkk(3,:),"go","MarkerSize",4);hold on;plot(t0,kkk(4,:),"b","MarkerSize",4);legend("Sf1=10","Sf1=5000","Sf1=50000","Sf1=100000")
2023-07-19 07:30:262

matlab曲线图例太密了,也就是Maker太密了。

颜色区分,marker形状可以采用.-;-;:等方法区分,另外还有markersize定义,如果这些还不行,尝试重新定义模型
2023-07-19 07:30:361

matlab坐标轴如何带单位标注?

x=0:10;y=sin(2*pi/10*x);plot(x,y);xtick=get(gca,"xticklabel");xtick=[xtick,repmat("°",size(xtick,1),1)];set(gca,"xticklabel",xtick);ytick=get(gca,"yticklabel");ytick=[ytick,repmat("%",size(ytick,1),1)];set(gca,"yticklabel",ytick);
2023-07-19 07:30:462

布朗运动怎么在matlab上模拟

clc;clear all;t=1;x=100;y=100;vx=17;vy=0;for k=1:40 p=2*pi*rand(1,1) ; vx=17*cos(p); vy=17*sin(p); x=x+vx*t; y=y+vy*t; line("ydata",y,"xdata",x,"Color" ,[1 0 0], "Marker" ,"." , "MarkerSize" ,12, "EraseMode" , "non"); plot(x,y); axis([0 200 0 200]) if(x>200||y>200||x<0||y<0) break end hold on pause(0.4);end望采纳
2023-07-19 07:30:551