MATLAB有趣图像程序 1.五星红旗
function varargout=wxhq(varargin)
x=[0 0 40 40 0];
y=[0 13 13 0 0];
k=40/13;
fill(x,y,'r')
hold on
plot(x,y,'r')
axis([0 40 0 13])
seta=pi/6;
R=1.5;R2=0.55;x0=7;y0=9;seta=0;
fliu(R,R2,x0,y0,seta,k)
R=0.6;R2=0.23;x0=15;y0=11.6;seta=-pi/20;
fliu(R,R2,x0,y0,seta,k)
R=0.6;R2=0.23;x0=20;y0=10;seta=pi/20;
fliu(R,R2,x0,y0,seta,k)
R=0.6;R2=0.23;x0=19;y0=7;seta=pi/25;
fliu(R,R2,x0,y0,seta,k)
R=0.6;R2=0.23;x0=16;y0=5;seta=-pi/10;
fliu(R,R2,x0,y0,seta,k)
axis off
function fliu(R,R2,x0,y0,seta,k)
x=zeros(1,10);
y=x;
for i=1:5
x(2*(i-1)+1)=R*cos(pi/2+2*pi/5*(i-1)+seta);
x(2*i)=R2*cos(pi/2+2*pi/5*(i-1)+pi/5+seta);
y(2*(i-1)+1)=R*sin(pi/2+2*pi/5*(i-1)+seta);
y(2*i)=R2*sin(pi/2+2*pi/5*(i-1)+pi/5+seta);
end
x(11)=x(1);
y(11)=y(1);
x=x*k+x0;
y=y+y0;
fill(x,y,[1 0.7 0])
plot(x,y,'y')
2.函数图像
帽子第一个
x=-18:0.5:18;y=x';
u=ones(size(y))*x;
v=y*ones(size(x));
r=sqrt(u.^2+v.^2)+eps;
z=sin(r)./r;
mesh(z);
xlabel('x');
ylabel('y');
帽子第二个
x=-18:0.5:18;y=x;
%产生x,y两个向量
[x,y]=meshgrid(x,y);
%形成二维网格数据
r=sqrt(x.^2+y.^2)+eps;
%加上eps避免当分母r趋向于0时会无法定义
z=sin(r)./r;
%产生z轴数据
surf(x,y,z);
分形
p=[0 0;10 0];
a=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)];
for k=1:5
n=max(size(p));d=diff(p)/3;
q=p(1:n-1,:);
p(5:4:4*n-3,:)=p(2:n,:);
p(2:4:4*n-6,:)=q+d;
p(3:4:4*n-5,:)=p(2:4:4*n-6,:)+d*a';
p(4:4:4*n-4,:)=q+2*d;
end
plot(p(:,1),p(:,2))
分图
x=0:0.05:8;
y1=2*sin(x);
y2=2*cos(x);
y3=sin(2*x);
y4=cos(2*x);
subplot(2,2,1);
plot(x,y1);
title('2sinx')
subplot(2,2,2);
plot(x,y2);
title('2cosx')
subplot(2,2,3);
plot(x,y3);
title('sin2x')
subplot(2,2,4);
plot(x,y4);
title('cos2x')
球
[x,y,z]=sphere(30);
surf(x,y,z),box
3.统计图
x=[8 20 36 24 12];
subplot(221);
pie(x,[1 0 0 0 1]);
title('饼图');
subplot(222);
bar(x,'g');
title('垂直条形图');
subplot(223);
barh(x,'r');
title('水平条形图');
4.囧
syms x;
g=1/(x^2+2*x-3);
ezplot(g,-10,10);
5.不可说,哈哈
[X, Y] = meshgrid(0.01:0.01:1, 0.01:0.01:1);
Zfun =@(x,y)12.5*x.*log10(x).*y.*(y-1)+exp(-((25 ...
*x - 25/exp(1)).^2+(25*y-25/2).^2).^3)./25;
Z = Zfun(X,Y);
figure;
surf(Y,Z,X,'FaceColor',[1 0.75 0.65],'linestyle','none');
hold on
surf(Y+0.98,Z,X,'FaceColor',[1 0.75 0.65],'linestyle','none');
axis equal; view([116 30]);
camlight;
lighting phong; % 设置光照和光照模式
6.爱心
[x,y]=meshgrid(-10:0.01:10);
z=-(17*x.^2-16*y.*abs(x)+17.*y.^2);
[c,h]=contourf(z,100);set(h,'linestyle','none')
7. 贝塞尔曲线
%我反正没打开。。。。。。
clear %清除变量
f=figure; %创建图形窗口并取句柄
dt=0.01; %微小增量
while get(f,'currentcharacter')~=char(27) %循环终止条件——按esc键终止
M=rand(2,4); %生成一个随机矩阵
cx=3*(M(1,2)-M(1,1)); %算出六个系数
bx=3*(M(1,3)-M(1,2))-cx;
ax=M(1,4)-M(1,1)-cx-bx;
cy=3*(M(2,2)-M(2,1));
by=3*(M(2,3)-M(2,2))-cy;
ay=M(2,4)-M(2,1)-cy-by;
M1=rand(2,4); %生成另一个随机矩阵
cx1=3*(M1(1,2)-M1(1,1)); %算出另外六个变量
bx1=3*(M1(1,3)-M1(1,2))-cx1;
ax1=M1(1,4)-M1(1,1)-cx1-bx1;
cy1=3*(M1(2,2)-M1(2,1));
by1=3*(M1(2,3)-M1(2,2))-cy1;
ay1=M1(2,4)-M1(2,1)-cy1-by1;
t=0:0.05:1; %向量t,也是曲线的x的范围
for i=1:60 %每次生成的曲线移动六十次(动画效果)
xt=ax*t.^3+bx*t.^2+cx*t.^1+M(1,1); %第一簇贝塞尔曲线的x的参数方程
yt=ay*t.^3+by*t.^2+cy*t.^1+M(2,1); %第一簇曲线有三条
yt1=ay*t.^3+by*t.^2+cy*t.^1+M(2,1)+0.08;
yt2=ay*t.^3+by*t.^2+cy*t.^1+M(2,1)-0.08;
xta=ax1*t.^3+bx1*t.^2+cx1*t.^1+M1(1,1);%第二簇贝塞尔曲线的参数方程
yta=ay1*t.^3+by1*t.^2+cy1*t.^1+M1(2,1);%第二簇曲线也有三条
yta1=ay1*t.^3+by1*t.^2+cy1*t.^1+M1(2,1)+0.08;
yta2=ay1*t.^3+by1*t.^2+cy1*t.^1+M1(2,1)-0.08;
plot(xt,yt,'o-r',xt,yt1,'-.g',xt,yt2,'-*c',...
xta,yta,'y',xta,yta1,'.m',xta,yta2,'ow');%作图
axis off %不显示坐标轴(这样看起来更像屏保)
t=t+dt; %曲线移动dt
pause(0.03); %移动慢一点以便引起人的视觉感受
end %for循环结束
drawnow; %画当前的图像
end %结束
i
i以上内容均来自于网络,由万里霜晨月整理。
因篇幅问题不能全部显示,请点此查看更多更全内容