有趣的Matlab
(1)Matlab有许多彩蛋:
xpbombs; %扫雷
vibes; %振膜
teapotdemo; %茶壶
logo; %Matlab logo
travel; %路线问题
life; %Convay的人生小游戏
makevase; %造花瓶
truss; %弹弹弹
codec; %编码
fifteen; %拼图
xpquad; %超二次曲面
wrldtrv; %坐飞机
spy; %不加参数就画个狗
earthmap; %地图
cplxdemo; %复杂的XYZ立体图形~黎曼曲面的平面效果
lorenz; %Lorenz吸引子动画显示
(2)好玩的代码段:
% 画爱心
[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; % 设置光照和光照模式
% 说话
function wav = matlabspeech(txt,voice,pace,fs)
% matlabspeech(‘I Love Maple and Matlab’)
% matlabspeech(‘I Love Maple’)
% matlabspeech(‘I Love Matlab’)
if ~ispc, error(‘要求使用Microsoft Win32 SAPI .’); end
if ~ischar(txt), error(‘第一个参数是字符串.’); end
SV = actxserver(‘SAPI.SpVoice’);
TK = invoke(SV,’GetVoices’);
if nargin > 1
for k = 0:TK.Count-1
if strcmpi(voice,TK.Item(k).GetDescription)
SV.Voice = TK.Item(k);
break;
elseif strcmpi(voice,’list’)
disp(TK.Item(k).GetDescription);
end
end
if nargin > 2
if isempty(pace), pace = 0; end
if abs(pace) > 10, pace = sign(pace)*10; end
SV.Rate = pace;
end
end
if nargin < 4 || ~ismember(fs,[8000,11025,12000,16000,22050,24000,32000,…
44100,48000]), fs = 16000; end
if nargout > 0
MS = actxserver(‘SAPI.SpMemoryStream’);
MS.Format.Type = sprintf(‘SAFT%dkHz16BitMono’,fix(fs/1000));
SV.AudioOutputStream = MS;
end
invoke(SV,’Speak’,txt);
if nargout > 0
wav = reshape(double(invoke(MS,’GetData’)),2,[])’;
wav = (wav(:,2)*256+wav(:,1))/32768;
wav(wav >= 1) = wav(wav >= 1)-2;
delete(MS);
clear MS;
end
delete(SV);
clear SV TK;
pause(0.2);
end
% 最炫民族风
fs = 44100; % sample rate
dt = 1/fs;
T16 = 0.125;
t16 = [0:dt:T16];
[temp k] = size(t16);
t4 = linspace(0,4*T16,4*k);
t8 = linspace(0,2*T16,2*k);
[temp i] = size(t4);
[temp j] = size(t8);
% Modification functions
mod4=(t4.^4).*exp(-30*(t4.^0.5));
mod4=mod4*(1/max(mod4));
mod8=(t8.^4).*exp(-50*(t8.^0.5));
mod8=mod8*(1/max(mod8));
mod16=(t16.^4).*exp(-90*(t16.^0.5));
mod16=mod16*(1/max(mod16));
f0 = 2*146.8; % reference frequency
ScaleTable = [2/3 3/4 5/6 15/16 …
1 9/8 5/4 4/3 3/2 5/3 9/5 15/8 …
2 9/4 5/2 8/3 3 10/3 15/4 4 …
1/2 9/16 5/8];
% 1/4 notes
do0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4);
re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4);
mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4);
fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4);
so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4);
la0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4);
ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4);
do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4);
re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4);
mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4);
fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4);
so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4);
la1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4);
tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4);
ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4);
do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4);
re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4);
mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4);
fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4);
so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4);
la2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4);
ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4);
do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4);
blkf = zeros(1,i);
% 1/8 notes
do0e = mod8.*cos(2*pi*ScaleTable(21)*f0*t8);
re0e = mod8.*cos(2*pi*ScaleTable(22)*f0*t8);
mi0e = mod8.*cos(2*pi*ScaleTable(23)*f0*t8);
fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8);
so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8);
la0e = mod8.*cos(2*pi*ScaleTable(3)*f0*t8);
ti0e = mod8.*cos(2*pi*ScaleTable(4)*f0*t8);
do1e = mod8.*cos(2*pi*ScaleTable(5)*f0*t8);
re1e = mod8.*cos(2*pi*ScaleTable(6)*f0*t8);
mi1e = mod8.*cos(2*pi*ScaleTable(7)*f0*t8);
fa1e = mod8.*cos(2*pi*ScaleTable(8)*f0*t8);
so1e = mod8.*cos(2*pi*ScaleTable(9)*f0*t8);
la1e = mod8.*cos(2*pi*ScaleTable(10)*f0*t8);
tb1e = mod8.*cos(2*pi*ScaleTable(11)*f0*t8);
ti1e = mod8.*cos(2*pi*ScaleTable(12)*f0*t8);
do2e = mod8.*cos(2*pi*ScaleTable(13)*f0*t8);
re2e = mod8.*cos(2*pi*ScaleTable(14)*f0*t8);
mi2e = mod8.*cos(2*pi*ScaleTable(15)*f0*t8);
fa2e = mod8.*cos(2*pi*ScaleTable(16)*f0*t8);
so2e = mod8.*cos(2*pi*ScaleTable(17)*f0*t8);
la2e = mod8.*cos(2*pi*ScaleTable(18)*f0*t8);
ti2e = mod8.*cos(2*pi*ScaleTable(19)*f0*t8);
do3e = mod8.*cos(2*pi*ScaleTable(20)*f0*t8);
blke = zeros(1,j);
% 1/16 notes
do0s = mod16.*cos(2*pi*ScaleTable(21)*f0*t16);
re0s = mod16.*cos(2*pi*ScaleTable(22)*f0*t16);
mi0s = mod16.*cos(2*pi*ScaleTable(23)*f0*t16);
fa0s = mod16.*cos(2*pi*ScaleTable(1)*f0*t16);
so0s = mod16.*cos(2*pi*ScaleTable(2)*f0*t16);
la0s = mod16.*cos(2*pi*ScaleTable(3)*f0*t16);
ti0s = mod16.*cos(2*pi*ScaleTable(4)*f0*t16);
do1s = mod16.*cos(2*pi*ScaleTable(5)*f0*t16);
re1s = mod16.*cos(2*pi*ScaleTable(6)*f0*t16);
mi1s = mod16.*cos(2*pi*ScaleTable(7)*f0*t16);
fa1s = mod16.*cos(2*pi*ScaleTable(8)*f0*t16);
so1s = mod16.*cos(2*pi*ScaleTable(9)*f0*t16);
la1s = mod16.*cos(2*pi*ScaleTable(10)*f0*t16);
tb1s = mod16.*cos(2*pi*ScaleTable(11)*f0*t16);
ti1s = mod16.*cos(2*pi*ScaleTable(12)*f0*t16);
do2s = mod16.*cos(2*pi*ScaleTable(13)*f0*t16);
re2s = mod16.*cos(2*pi*ScaleTable(14)*f0*t16);
mi2s = mod16.*cos(2*pi*ScaleTable(15)*f0*t16);
fa2s = mod16.*cos(2*pi*ScaleTable(16)*f0*t16);
so2s = mod16.*cos(2*pi*ScaleTable(17)*f0*t16);
la2s = mod16.*cos(2*pi*ScaleTable(18)*f0*t16);
ti2s = mod16.*cos(2*pi*ScaleTable(19)*f0*t16);
do3s = mod16.*cos(2*pi*ScaleTable(20)*f0*t16);
blks = zeros(1,k);
% Melody by Schau_mal
part0 = [mi1f la0e la0e do1f mi1f …
re1e re1s mi1s re1e do1e re1e do1e la0f …
mi1f la0e la0e do1f mi1f …
so1e re1s mi1s re1e do1e re1e do1e ti0e so0e …
mi1f la0e la0e do1f mi1f …
re1e re1s mi1s re1e do1e re1e do1e la0e so0e …
mi1f la0e la0e do1f mi1f …
so1e mi1e blkf blkf blkf …
];
part1 = [la0f la0e so0e la0f la0e do1e …
do1f re1e do1e la0f la0f …
do1f do1e so0e do1e re1e mi1e so1e …
so1e mi1e re1f mi1f mi1f …
la1e la1e la1e so1e mi1e mi1f do1e …
la0e la0e la0e mi1e re1s mi1s re1e re1f …
mi1e mi1e so1e mi1e re1e mi1e re1e do1e …
la0f so0f la0f la0f …
];
part2 = [mi1e mi1e so1e mi1e mi1e so1e so1e la1e …
do2e la1e so1f la1s do2s la1e la1f …
la0f la0e so0e la0f do1f …
re1e mi1s re1s do1e re1e mi1f mi1f …
la0e la1e la1e so1e re1e mi1s re1s do1e re1e …
mi1f mi1f blke blke blkf …
do1e la0e la0e do1e re1f so0e so0e …
mi1e so1e mi1e re1e do1f do1f …
la0e do1e re1e mi1e re1e do1e so0e mi0e …
la0f la0f blke blke blkf …
];
part3 = [la0f la0e so0e la0f do1f …
re1e mi1s re1s do1e re1e mi1f mi1f …
la0e la1e la1e so1e re1e mi1s re1s do1e re1e …
mi1f mi1f blke blke blkf …
do1e la0e la0e do1e re1f so0e so0e …
mi1e so1e mi1e re1e do1f do1e do1e …
la0e do1e re1e mi1e so1e mi1e mi1e so1e …
la1f la1f la1f la1f …
];
part4 = [la1e la1s la1s la1e la1e la1e la1s so1s mi1e re1e …
re1e re1s re1s mi1e mi1s so1s mi1e mi1s re1s do1e do1s la0s …
la0f la0e so0e la0f la0e do1e …
re1e mi1s re1s do1e re1e mi1f mi1f …
la1e so1e mi1e re1e so1e mi1e re1e do1e …
do1f do1f la0s do1s re1s mi1s re1s do1s la0s do1s
];
part5 = [do2e do2s do2s la1e la1s la1s so1e so1s so1s mi1e mi1s mi1s …
re1e mi1s re1s do1e la0s so0s la0s so0s do1s re1s mi1s so1s la1s re2s …
do2f do2f blks blks blks blks do1e re1e …
mi1f mi1f mi1f so1e mi1e …
la1f la1f la1e do1e so1e mi1e …
re1f re1e re1s re1s re1e re1e do1e re1e …
mi1f mi1e mi1s mi1s mi1e re1s do1s ti0e do1s re1s …
mi1f mi1f mi1f so1e mi1e …
do2f la1f la1f la1e do1e …
re1f so1f so1f la1f …
ti1f ti1f ti1f ti1f …
];
part6 = [blkf blkf mi1e so1e mi1e so1e …
mi1f la0e la0s la0s do1f la0e mi1s la0s …
do1e do1s do1s re1e do1s re1s mi1f mi1f …
mi1f la0e la0s la0s so1f re1e re1s re1s …
mi1f mi1f mi1s re1s do1s la0s mi0s re0s mi0s so0s …
do1f la0e la0s la0s re1f so0e so0s so0s …
mi0f so0e so0s so0s do1f do1f …
la0f do1e do1s la0s mi1e mi1s mi1s re1e re1s mi1s …
];
% Combination, v1 is complete version, v2 is simple version.
v1 = [part0 part1 part1 part2 part3 part4 part0 part1 part1 part2 part3 part5 part3 part6 part3];
v2 = [part0 part1 part1 part2 part3 part5 part3 part6 part3];
% Let’s rock ^_^
s = v1;
s = s/max(s);
sound(s,fs);
% 画囧
syms x;
g=1/(x^2+2*x-3);
ezplot(g,-10,10);
% 2D 爱心
[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’)
% 五星红旗
function varargout=saxplaxliu(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’)
% 光盘
t = (0:.02:2)*pi;
r = 0:.02:1; %r = 0.3:.02:1;
pcolor(cos(t)’*r,sin(t)’*r,t’*(r==r))
colormap(hsv(256)), shading interp, axis image off
%ezsurf(‘r*cos(t)’,’r*sin(t)’,’t’,[0 1 0 2*pi])
%colormap(hsv(256)),shading interp,view(2), axis image off
由于Matlab版本不同,上述命令可能需要修改后才能执行。同学们,有时间可以试试哦!
转自:https://blog.csdn.net/Tonor/article/details/52749891?utm_source=copy
