Matlab小代码
- 格式:doc
- 大小:114.50 KB
- 文档页数:9
30个智能算法matlab代码以下是30个使用MATLAB编写的智能算法的示例代码: 1. 线性回归算法:matlab.x = [1, 2, 3, 4, 5];y = [2, 4, 6, 8, 10];coefficients = polyfit(x, y, 1);predicted_y = polyval(coefficients, x);2. 逻辑回归算法:matlab.x = [1, 2, 3, 4, 5];y = [0, 0, 1, 1, 1];model = fitglm(x, y, 'Distribution', 'binomial'); predicted_y = predict(model, x);3. 支持向量机算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3];y = [1, 1, -1, -1, -1];model = fitcsvm(x', y');predicted_y = predict(model, x');4. 决策树算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3]; y = [0, 0, 1, 1, 1];model = fitctree(x', y');predicted_y = predict(model, x');5. 随机森林算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3]; y = [0, 0, 1, 1, 1];model = TreeBagger(50, x', y');predicted_y = predict(model, x');6. K均值聚类算法:matlab.x = [1, 2, 3, 10, 11, 12]; y = [1, 2, 3, 10, 11, 12]; data = [x', y'];idx = kmeans(data, 2);7. DBSCAN聚类算法:matlab.x = [1, 2, 3, 10, 11, 12]; y = [1, 2, 3, 10, 11, 12]; data = [x', y'];epsilon = 2;minPts = 2;[idx, corePoints] = dbscan(data, epsilon, minPts);8. 神经网络算法:matlab.x = [1, 2, 3, 4, 5];y = [0, 0, 1, 1, 1];net = feedforwardnet(10);net = train(net, x', y');predicted_y = net(x');9. 遗传算法:matlab.fitnessFunction = @(x) x^2 4x + 4;nvars = 1;lb = 0;ub = 5;options = gaoptimset('PlotFcns', @gaplotbestf);[x, fval] = ga(fitnessFunction, nvars, [], [], [], [], lb, ub, [], options);10. 粒子群优化算法:matlab.fitnessFunction = @(x) x^2 4x + 4;nvars = 1;lb = 0;ub = 5;options = optimoptions('particleswarm', 'PlotFcn',@pswplotbestf);[x, fval] = particleswarm(fitnessFunction, nvars, lb, ub, options);11. 蚁群算法:matlab.distanceMatrix = [0, 2, 3; 2, 0, 4; 3, 4, 0];pheromoneMatrix = ones(3, 3);alpha = 1;beta = 1;iterations = 10;bestPath = antColonyOptimization(distanceMatrix, pheromoneMatrix, alpha, beta, iterations);12. 粒子群-蚁群混合算法:matlab.distanceMatrix = [0, 2, 3; 2, 0, 4; 3, 4, 0];pheromoneMatrix = ones(3, 3);alpha = 1;beta = 1;iterations = 10;bestPath = particleAntHybrid(distanceMatrix, pheromoneMatrix, alpha, beta, iterations);13. 遗传算法-粒子群混合算法:matlab.fitnessFunction = @(x) x^2 4x + 4;nvars = 1;lb = 0;ub = 5;gaOptions = gaoptimset('PlotFcns', @gaplotbestf);psOptions = optimoptions('particleswarm', 'PlotFcn',@pswplotbestf);[x, fval] = gaParticleHybrid(fitnessFunction, nvars, lb, ub, gaOptions, psOptions);14. K近邻算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3]; y = [0, 0, 1, 1, 1];model = fitcknn(x', y');predicted_y = predict(model, x');15. 朴素贝叶斯算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3]; y = [0, 0, 1, 1, 1];model = fitcnb(x', y');predicted_y = predict(model, x');16. AdaBoost算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3];y = [0, 0, 1, 1, 1];model = fitensemble(x', y', 'AdaBoostM1', 100, 'Tree'); predicted_y = predict(model, x');17. 高斯混合模型算法:matlab.x = [1, 2, 3, 4, 5]';y = [0, 0, 1, 1, 1]';data = [x, y];model = fitgmdist(data, 2);idx = cluster(model, data);18. 主成分分析算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3]; coefficients = pca(x');transformed_x = x' coefficients;19. 独立成分分析算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3]; coefficients = fastica(x');transformed_x = x' coefficients;20. 模糊C均值聚类算法:matlab.x = [1, 2, 3, 4, 5; 1, 2, 2, 3, 3]; options = [2, 100, 1e-5, 0];[centers, U] = fcm(x', 2, options);21. 遗传规划算法:matlab.fitnessFunction = @(x) x^2 4x + 4; nvars = 1;lb = 0;ub = 5;options = optimoptions('ga', 'PlotFcn', @gaplotbestf);[x, fval] = ga(fitnessFunction, nvars, [], [], [], [], lb, ub, [], options);22. 线性规划算法:matlab.f = [-5; -4];A = [1, 2; 3, 1];b = [8; 6];lb = [0; 0];ub = [];[x, fval] = linprog(f, A, b, [], [], lb, ub);23. 整数规划算法:matlab.f = [-5; -4];A = [1, 2; 3, 1];b = [8; 6];intcon = [1, 2];[x, fval] = intlinprog(f, intcon, A, b);24. 图像分割算法:matlab.image = imread('image.jpg');grayImage = rgb2gray(image);binaryImage = imbinarize(grayImage);segmented = medfilt2(binaryImage);25. 文本分类算法:matlab.documents = ["This is a document.", "Another document.", "Yet another document."];labels = categorical(["Class 1", "Class 2", "Class 1"]);model = trainTextClassifier(documents, labels);newDocuments = ["A new document.", "Another new document."];predictedLabels = classifyText(model, newDocuments);26. 图像识别算法:matlab.image = imread('image.jpg');features = extractFeatures(image);model = trainImageClassifier(features, labels);newImage = imread('new_image.jpg');newFeatures = extractFeatures(newImage);predictedLabel = classifyImage(model, newFeatures);27. 时间序列预测算法:matlab.data = [1, 2, 3, 4, 5];model = arima(2, 1, 1);model = estimate(model, data);forecastedData = forecast(model, 5);28. 关联规则挖掘算法:matlab.data = readtable('data.csv');rules = associationRules(data, 'Support', 0.1);29. 增强学习算法:matlab.environment = rlPredefinedEnv('Pendulum');agent = rlDDPGAgent(environment);train(agent);30. 马尔可夫决策过程算法:matlab.states = [1, 2, 3];actions = [1, 2];transitionMatrix = [0.8, 0.1, 0.1; 0.2, 0.6, 0.2; 0.3, 0.3, 0.4];rewardMatrix = [1, 0, -1; -1, 1, 0; 0, -1, 1];policy = mdpPolicyIteration(transitionMatrix, rewardMatrix);以上是30个使用MATLAB编写的智能算法的示例代码,每个算法都可以根据具体的问题和数据进行相应的调整和优化。
MATLAB是一种用于数学计算、数据可视化和编程的高级技术计算语言和交互式环境。
它是许多工程和科学领域中的首选工具之一,能够帮助用户快速解决各种小问题。
本文将通过例子和代码,介绍MATLAB是如何解决小问题的。
1. 读取和绘制数据假设我们有一组实验数据,保存在一个名为"data.csv"的文件中。
我们可以使用MATLAB的csvread函数读取数据,然后使用plot函数绘制图形,如下所示:```matlabdata = csvread('data.csv'); % 读取数据plot(data(:,1), data(:,2)); % 绘制数据xlabel('x轴'); % 添加x轴标签ylabel('y轴'); % 添加y轴标签title('数据可视化'); % 添加标题```2. 拟合曲线现在我们想对这组数据进行曲线拟合,以便更好地理解数据的特征。
我们可以使用MATLAB的polyfit函数来进行多项式拟合,然后使用polyval函数绘制拟合曲线,如下所示:```matlabp = polyfit(data(:,1), data(:,2), 2); % 二次多项式拟合y_fit = polyval(p, data(:,1)); % 计算拟合曲线的值plot(data(:,1), data(:,2)); % 绘制原始数据hold on;plot(data(:,1), y_fit, 'r--'); % 绘制拟合曲线xlabel('x轴'); % 添加x轴标签ylabel('y轴'); % 添加y轴标签title('数据拟合'); % 添加标题legend('原始数据', '拟合曲线'); % 添加图例```3. 解方程假设我们需要解一个简单的方程,例如x^2-5x+6=0。
⼀、MATLAB之基础⼊门代码序⾔本篇旨在列出matlab⼊门及在科研中必须掌握的⼀些基础代码,主要内容包括:matkab矩阵运算、绘图、函数流程控制、⽂件、图像、函数等基本操作,以便于随查随⽤,⾄于常⽤的算法本篇鲜有涉及。
%% matlab总述% matlab中基本数据结构是矩阵,即使单独⼀个数也视为⼀个1*1的矩阵%%%% 矩阵创建&赋值操作a=5;b=[1 2 3];c=[1;2;3];d=[1 2 3;4 5 6;7 8 9];x=[0:0.5:2]; % 0.5是步长x=zeros(4); % 4*4零矩阵x=zeros(2,3);% 2*3零矩阵x=ones(5,5); % 1矩阵x=eye(5); % 5阶单位阵,与Octave语法完全⼀致[r,c]=size(x); % 返回x矩阵的⼤⼩x=linspace(0,3,5); % 0到3间均匀⽣成5个点,⽣成函数的采样点[x,y,z]=meshgrid([],[],[]); % ⽤以⽣成函数的采样点%%%% matlab中的保留字piInf % ⽆穷⼤NaN % 未定式,0/0%%%% 数组计算a=a+b;a=a-b;% 数组加减a=b*c;a=b*inv(x)% 数组乘除 inversea=b.*c; % 对应位操作./ .* .^a=a';a=a(:);% 数组拉直%%%% 数组索引与操作% 括号是索引符号,如([],[])x=a(2,2);x=a(5);x=a(1:2,3:4); %([],[])x(x>72)=x(x>72)-72 % 数组的逻辑索引,x>72⾃⾝就是⼀个0/1⼆维数组,x(x>72)就是访问对应为1位置处的值% 数组赋值/改值a(2,2)=0a(5)=9a(1:2,3:4)=ones(2,2)a(1:2,[3,4,7,11])=ones(2,2) % matlab中[1:9],1:9是基本数据类型%%%% 数组的⽐较和逻辑运算,符合条件的同⼀位置为1,不符合则为0x=[1 2 3 4 5 6 7];y=[1 2 4 5 5 6 8];eq=(x==y); %上⾯说过了,x==y⾃⾝也是⼀个0/1⼆维数组eq=(x>2)&(y<5); % 与 &两边既可以是标量也可以是向量 VS. &&两边只能是标量eq=(x>2)|(y<5); % 或eq=xor(x>4,y<5); % 异或x(x<3)=-1; % (x<3)是⼀个0/1数组,x(x<3)就是把(x<3)数组中1对应位置的位置访问,再将访问到的位置赋值1,⽐较和逻辑运算与数组索引结合xy=[x,y]; xy=[x;y]; % ⽤已有数组构建新数组,数组融合img=cat(3,R,G,B); % ⾼级数组融合xy(:,xy(1,:)<4)=0 %逻辑运算结果矩阵也可以⽤来数组索引%%%% 数组操作函数x=[1 2 3;4 5 6;7 8 9];x=flipud(x);%上下转x=fliplr(x);%左右转x=rot90(x);%逆时针旋转90度x=pinv(x);%数组求(伪)逆sum(x,1); % x每列求和sum(x,2); % x每⾏求和sum(x(:)); % 求全和,:表⽰将数组拉直maxn=max(x);% 返回每列最⼤值maxn=max(x);% 返回每列最⼤值maxn=max(x(:)); % 返回全局最⼤值min(); % ⽤法同max()%%%% 常⽤数学函数% 注意matlab中矩阵是基本数据结构,因此所有函数都是对矩阵中每个x_i操作y=sin(x);y=abs(x);%绝对值y=sqrt(x);%开⽅y=ceil(x);%向上取整y=floor(x);%向上取整y=round(x);%四舍五⼊取整y=rand(r,c);%⽣成随机矩阵b=sum(a,idm);%求和函数,dim=1 表⽰对每⼀列求和,dim=2 表⽰对每⼀⾏求和tabulate(detect_result)% detect_result是⼀个列向量,该函数⽤以频数、频率统计%%%% MATLAB函数基本语句for i=1:2:100 %endwhile 1if a<1breakendendfunction [output1,]=functionname(input1,) % 函数定义command1command2output1=%%%% 基本绘图%plotx=0:0.001*pi:2*pi;y=sin(x);z=cos(x);plot(x,y,'-ob','LineWidth',1.5) % 标出数据点的折线图hold onplot(x,z,'rs') % 散点图drawnow % 动画图xlabel('x')ylabel('y')title('图')axis equal % 两轴单位长度相等axis([-2,2,-2,2]) % 控制坐标轴范围set(gca,'XTick',0:pi/2:4*pi); % 设置坐标轴刻度间距,⼀般与下⼀⾏命令搭配set(gca,'XTickLabel',{'0','0.5*pi','pi','1.5*pi','2*pi','2.5*pi','3*pi','3.5*pi','4*pi'})% 设置坐标轴刻度标号xlim([-2,2]) % 控制坐标轴范围text(0,0,'(0,0)') % 在数据曲线上点(x,y)处,标出'(3,5)'legend('cos(x)','sin(x)','sin(x)-cos(x)') % 依照绘图的顺序依次标注图例saveas(gcf,strcat('ch',num2str(i),'.emf')) % 保存plot图⽚,gcf是plot的句柄plot(X)%绘制⼆维矩阵,以⾏号为横坐标,各列为纵坐标plot(X);% plot制作动图for k=1:10plot (fft(eye(k+10))) % eye()单位阵,fft()傅⾥叶变换,plot()绘制矩阵axis equalM(k)=getframe; % 截取当前窗⼝作为影⽚帧endmovie(M,50) %播放多帧图⽚,M 50次%极坐标plar(theta,r,LineSpec)t=0:0.1:3*pi;polar(t,abs(cos(5*t)));% 快速⽅程绘图fplot('x-cos(x^2)',[-4,4]);% 绘制y=x-cos(x^2)ezplot('y-f(x),[-6 6 -8 8]');% ezplot('⽅程式',[xmin xmax ymin ymax])ezplot('cos(3*t)','sin(3*t)',[0:2*pi]);% ezplot('x参数式','y参数式',[tmin,tmax])%%%% 参数⽅程作图(可以画出很有趣的⾮函数图像)t=0:pi/50:2*pi;x=sin(t);y=cos(t);plot(x,y)axis([-1.1,1.1,-1.1,1.1])axis equal%%%%x=sin(t)y=cos(t)z=tplot3(x,y,z) % 三维曲线参数⽅程作图grid on % 开⽹格%%%%三维曲⾯[x,y]=meshgrid(-pi:0.1:pi); % 画函数采样点z=sin(x).*cos(y);mesh(x,y,z) % 画三维曲⾯figure() % 开新画板surf(x,y,z) % 画中间插值的三维曲⾯(有渲染效果)%%%% ⽂件数据读取% .txt纯数据⽂件⽂件data=load('c:\desktop\score.txt')% .txt⽂本⽂件fid=fopen('score.txt','r')line1=fgetl(fid)%数据按分割%数据类型转换line2=fgetl(fid)fclose(fid);fid=fopen('score.txt','w')fprintf(fid,'会当凌绝顶’)fprintf(fid,'%d⽉⼯资 %6.1f\n',[1,2,3,4;20000,19999,20010,25000,23000])fclose(fid);% excel⽂件data=xlsread('filename.xls','Sheet1','A3:C6');data(isnan(data))=0;%空位补零xlswrite('filename.xls',{'t','w'},'Sheet1','B1:C1')%图⽚⽂件img=imread('leave.jpg')% 图⽚读取image(img) % 图⽚显⽰lip(234:435,112:300,:)%图⽚切⽚imshow(lip) % 图⽚显⽰imwrite(img,'c:\\desktop\\figure.emf')% UI交互式导⼊图⽚[FileName PathName FilterIndex]=uigetfile({'*.jpg','*.bmf'},'请导⼊图⽚','*.jpg','MultiSelect','on') if ~ FilterIndexreturnend%视频⽂件data=VideoReader('sport.avi')% data是⼀结构体frame=read(data,25)% 读取视屏中的某⼀帧,即图⽚imshow(frame)% 对视频处理就是循环处理每⼀帧%%%% 线性⽅程求解、拟合、回归x=A\B%⼀元线性拟合x=[2.410 2.468 2.529 2.571 2.618 2.662 2.715 2.747 2.907 2.959 2.997];y=[0 0.800 1.695 2.290 2.965 3.595 4.365 4.810 7.125 7.890 8.425];a=polyfit(x,y,1)%⼀阶拟合 y=a1 x+ a2y=polyval(a,x) % 获得拟合表达式%⾃定义拟合p=fittype('a*x+b*sin(x)+c');% 指定拟合模型f=fit(x,y,p)% 获得拟合函数,x和y必须为列向量plot(f,x,y)% 画出拟合图%差值 x=[1:10] y=[1:10],线性回归求xi对应的yiyi=interp1(x,y,xi,'linear');%线性回归 y=f(x1,x2,x3)%%%%微分⽅程求解%解析解syms y(x);ode=diff(y,x)-y==0;init=y(0)==1;dsolve(ode,init)%dsolve('D2y+4*Dy+24*y=0','y(0)=0,Dy(0)=15','x')%尤克—库塔数值解%%% 符号对象的创建,matlab中之前都是数值计算,这⾥是符号运算a=sym([1/2 sqrt(5)]);y=sym('2*sin(x)*cos(x)');y=simple(y);syms x y;z=cos(x)*sin(y);% 符号表达式及函数的创建, matlab默认是数值运算,符号运算需要提前声明。
实验 11、ones 语句:Y = ones(n) %生成n×n 全1 阵Y = ones(m,n) %生成m×n 全1 阵Y = ones([m n]) %生成m×n 全1 阵Y = ones(d1,d2,d3…) %生成d1×d2×d3×…全1 阵或数组Y = ones([d1 d2 d3…]) %生成d1×d2×d3×…全1 阵或数组Y = ones(size(A)) %生成与矩阵A 相同大小的全1 阵2、find 语句:k = find(x) %按行检索X 中非零元素的点,若没有非零元素,将返回空矩阵。
[i,j] = find(X) %检索X 中非零元素的行标i 和列标j 。
[i,j,v] = find(X) %检索X 中非零元素的行标i 和列标j 以及对应的元素值v 。
实验 31、编写一M 函数,a 和x 作为函数参数输入,函数里面分别用if 结构实现函数表示1()1x a x f x a x a ax a-≤-⎧⎪⎪=-<<⎨⎪≥⎪⎩function output=function1(x,a)result=0;if x<=-aresult=-1;elseif x>-a&x<aresult=x/a;else x>=aresult=1;endoutput=[result]; 2、编写一M 函数,迭代计算132n n x x +=+,给出可能的收敛值,其中x 的初值作为函数的参数输入。
function output=function2(x)y=0;while 1y=3/(x+2);if abs(y-x)<0.000001break;else x=y;endendoutput=[y]; end3、编写一M函数,实现212!!nxx xe xn=+++++L L近似计算指数,其中x为函数参数输入,当n+1步与n步的结果误差小于0.00001时停止,分别用for和while 结构实现。
第2章图像获取2.3.2 二维连续傅里叶变换例2.2figure(1); %建立图形窗口1[u,v] = meshgrid(-1:0.01:1); %生成二维频域网格F1 = abs(sinc(u.*pi));F2 = abs(sinc(v.*pi));F=F1.*F2; %计算幅度频谱F=|F(u,v)|surf(u,v,F); %显示幅度频谱,如图2.3(b)shading interp; %平滑三维曲面上的小格axis off; %关闭坐标系figure(2); %建立图形窗口2F1=histeq(F); %扩展F的对比度以增强视觉效果imshow(F1); %用图像来显示幅度频谱,如图2.3(c)第3章图像变换3.4.4 二维FFT的MATLAB实现例3.2 简单图像及其傅里叶变换MATLAB程序:%建立简单图像d并显示之d = zeros(32,32); %图像大小32⨯32d(13:20,13:20) = 1; %中心白色方块大小为8⨯8figure(1); %建立图形窗口1imshow(d,'notruesize');%显示图像d如图3.5(a)所示%计算傅里叶变换并显示之D = fft2(d); %计算图像d的傅里叶变换,fft2(d) = fft(fft(d).').'figure(2); %建立图形窗口2imshow(abs(D),[-1 5],'notruesize'); %显示图像d的傅里叶变换谱如3.5(b)所示例3.3 MATLAB图像及其傅里叶变换谱MATLAB程序:figure(1);load imdemos saturn2; %装入MA TLAB图像saturn2imshow(saturn2); %显示图像saturn2如图3.6(a)所示figure(2);S= fftshift(fft2(saturn2)); %计算傅里叶变换并移位imshow(log(abs(S)),[ ]); %显示傅里叶变换谱如3.6(b)所示例3.4 真彩图像及其傅里叶变换谱MATLAB程序:figure(1);A=imread('image1.jpg'); %装入真彩图像,见图1.1(b)B=rgb2gray(A); %将真彩图像转换为灰度图像imshow(B); %显示灰度图像如图3.7(a)所示C=fftshift(fft2(B)); %计算傅里叶变换并移位figure(2);imshow(log(abs(C)),[ ]); %显示傅里叶变换谱如3.7(b)所示3.5.4 离散余弦变换的MATLAB实现例3.5 计算并显示真彩图像余弦变换的MATLAB程序如下:RGB=imread('image2.jpg'); %装入真彩图像figure(1);imshow(RGB); %显示彩色图像GRAY=rgb2gray(RGB); %将真彩图像转换为灰度图像figure(2);imshow(GRAY); %显示灰度图像如图3.10(a)所示DCT=dct2(GRAY); %进行余弦变换figure(3);imshow(log(abs(DCT)),[ ]); %显示余弦变换如图3.10(b)所示。
MATLAB主要命令汇总MATLAB函数参考附录1.1 管理用命令函数名功能描述函数名功能描述addpath 增加一条搜索路径 rmpath 删除一条搜索路径demo 运行Matlab演示程序 type 列出.M文件doc 装入超文本文档 version 显示Matlab的版本号help 启动联机帮助 what 列出当前目录下的有关文件lasterr 显示最后一条信息 whatsnew 显示Matlab的新特性lookfor 搜索关键词的帮助 which 造出函数与文件所在的目录path 设置或查询Matlab路径附录1.2管理变量与工作空间用命令函数名功能描述函数名功能描述clear 删除内存中的变量与函数 pack 整理工作空间内存disp 显示矩阵与文本 save 将工作空间中的变量存盘length 查询向量的维数 size 查询矩阵的维数load 从文件中装入数据 who,whos 列出工作空间中的变量名附录1.3文件与操作系统处理命令函数名功能描述函数名功能描述cd 改变当前工作目录 edit 编辑.M文件delete 删除文件 matlabroot 获得Matlab的安装根目录diary 将Matlab运行命令存盘 tempdir 获得系统的缓存目录dir 列出当前目录的内容 tempname 获得一个缓存(temp)文件! 执行操作系统命令附录1.4窗口控制命令函数名功能描述函数名功能描述echo 显示文件中的Matlab中的命令 more 控制命令窗口的输出页面format 设置输出格式附录1.5启动与退出命令函数名功能描述函数名功能描述matlabrc 启动主程序 quit 退出Matlab环境startup Matlab自启动程序附录2 运算符号与特殊字符附录2.1运算符号与特殊字符函数名功能描述函数名功能描述+ 加 ... 续行标志- 减 , 分行符(该行结果不显示)* 矩阵乘 ; 分行符(该行结果显示).* 向量乘 % 注释标志^ 矩阵乘方 ! 操作系统命令提示符.^ 向量乘方矩阵转置kron 矩阵kron积 . 向量转置\ 矩阵左除 = 赋值运算/ 矩阵右除 == 关系运算之相等.\ 向量左除 ~= 关系运算之不等./ 向量右除 < 关系运算之小于: 向量生成或子阵提取 <= 关系运算之小于等于() 下标运算或参数定义 > 关系运算之大于[] 矩阵生成 >= 关系运算之大于等于{} & 逻辑运算之与. 结构字段获取符 | 逻辑运算之或. 点乘运算,常与其他运算符联合使用(如.\) ~ 逻辑运算之非xor 逻辑运算之异成附录2.2逻辑函数函数名功能描述函数名功能描述all 测试向量中所用元素是否为真 is*(一类函数) 检测向量状态.其中*表示一个确定的函数(isinf)any 测试向量中是否有真元素 *isa 检测对象是否为某一个类的对象exist 检验变量或文件是否定义 logical 将数字量转化为逻辑量find 查找非零元素的下标附录3 语言结构与调试附录3.1编程语言函数名功能描述函数名功能描述builtin 执行Matlab内建的函数 global 定义全局变量eval 执行Matlab语句构成的字符串 nargchk 函数输入输出参数个数检验feval 执行字符串指定的文件 script Matlab语句及文件信息function Matlab函数定义关键词附录3.2控制流程函数名功能描述函数名功能描述break 中断循环执行的语句 if 条件转移语句case 与switch结合实现多路转移 otherwise 多路转移中的缺省执行部分else 与if一起使用的转移语句 return 返回调用函数elseif 与if一起使用的转移语句 switch 与case结合实现多路转移end 结束控制语句块 warning 显示警告信息error 显示错误信息 while 循环语句for 循环语句附录3.3交互输入函数名功能描述函数名功能描述input 请求输入 menu 菜单生成keyboard 启动键盘管理 pause 暂停执行附录3.4面向对象编程函数名功能描述函数名功能描述class 生成对象 isa 判断对象是否属于某一类double 转换成双精度型 superiorto 建立类的层次关系inferiorto 建立类的层次关系 unit8 转换成8字节的无符号整数inline 建立一个内嵌对象附录3.5调试函数名功能描述函数名功能描述dbclear 清除调试断点 dbstatus 列出所有断点情况dbcont 调试继续执行 dbstep 单步执行dbdown 改变局部工作空间内存 dbstop 设置调试断点dbmex 启动对Mex文件的调试 sbtype 列出带命令行标号的.M文件dbquit 退出调试模式 dbup 改变局部工作空间内容dbstack 列出函数调用关系附录4 基本矩阵与矩阵处理附录4.1基本矩阵函数名功能描述函数名功能描述eye 产生单位阵 rand 产生随机分布矩阵linspace 构造线性分布的向量 randn 产生正态分布矩阵logspace 构造等对数分布的向量 zeros 产生零矩阵ones 产生元素全部为1的矩阵 : 产生向量附录4.2特殊向量与常量函数名功能描述函数名功能描述ans 缺省的计算结果变量 non 非数值常量常由0/0或Inf/Inf获得computer 运行Matlab的机器类型 nargin 函数中参数输入个数eps 精度容许误差(无穷小) nargout 函数中输出变量个数flops 浮点运算计数 pi 圆周率i 复数单元 realmax 最大浮点数值inf 无穷大 realmin 最小浮点数值inputname 输入参数名 varargin 函数中输入的可选参数j 复数单元 varargout 函数中输出的可选参数附录4.3时间与日期函数名功能描述函数名功能描述calender 日历 eomday 计算月末clock 时钟 etime 所用时间函数cputime 所用的CPU时间 now 当前日期与时间date 日期 tic 启动秒表计时器datenum 日期(数字串格式) toc 读取秒表计时器datestr 日期(字符串格式) weekday 星期函数datevoc 日期(年月日分立格式)附录4.4矩阵处理函数名功能描述函数名功能描述cat 向量连接 reshape 改变矩阵行列个数diag 建立对角矩阵或获取对角向量 rot90 将矩阵旋转90度fliplr 按左右方向翻转矩阵元素 tril 取矩阵的下三角部分flipud 按上下方向翻转矩阵元素 triu 取矩阵的上三角部分repmat 复制并排列矩阵函数附录5 特殊矩阵函数名功能描述函数名功能描述compan 生成伴随矩阵 invhilb 生成逆hilbert矩阵gallery 生成一些小的测试矩阵 magic 生成magic矩阵hadamard 生成hadamard矩阵 pascal 生成pascal矩阵hankel 生成hankel矩阵 toeplitz 生成toeplitz矩阵hilb 生成hilbert矩阵 wilkinson 生成wilkinson特征值测试矩阵附录6 数学函数附录6.1三角函数函数名功能描述函数名功能描述sin/asin 正弦/反正弦函数 sec/asec 正割/反正割函数sinh/asinh 双曲正弦/反双曲正弦函数 sech/asech 双曲正割/反双曲正割函数cos/acos 余弦/反余弦函数 csc/acsc 余割/反余割函数cosh/acosh 双曲余弦/反双曲余弦函数 csch/acsch 双曲余割/反双曲余割函数tan/atan 正切/反正切函数 cot/acot 余切/反余切函数tanh/atanh 双曲正切/反双曲正切函数 coth/acoth 双曲余切/反双曲余切函数atan2 四个象限内反正切函数附录6.2指数函数函数名功能描述函数名功能描述exp 指数函数 log10 常用对数函数log 自然对数函数 sqrt 平方根函数附录6.3复数函数函数名功能描述函数名功能描述abs 绝对值函数 imag 求虚部函数angle 角相位函数 real 求实部函数conj 共轭复数函数附录6.4数值处理函数名功能描述函数名功能描述fix 沿零方向取整 round 舍入取整floor 沿-∞方向取整 rem 求除法的余数ceil 沿+∞方向取整 sign 符号函数附录6.5其他特殊数学函数函数名功能描述函数名功能描述airy airy函数 erfcx 比例互补误差函数besselh bessel函数(hankel函数) erfinv 逆误差函数bessili 改进的第一类bessel函数 expint 指数积分函数besselk 改进的第二类bessel函数 gamma gamma函数besselj 第一类bessel函数 gammainc 非完全gamma函数bessely 第二类bessel函数 gammaln gamma对数函数beta beta函数 gcd 最大公约数betainc 非完全的beta函数 lcm 最小公倍数betaln beta对数函数 log2 分割浮点数elipj Jacobi椭圆函数 legendre legendre伴随函数ellipke 完全椭圆积分 pow2 基2标量浮点数erf 误差函数 rat 有理逼近erfc 互补误差函数 rats 有理输出附录7 坐标转换函数名功能描述函数名功能描述cart2pol 笛卡儿坐标到极坐标转换 pol2cart 极坐标到笛卡儿坐标转换cart2sph 笛卡儿坐标到球面坐标转换 sph2cart 球面坐标到笛卡儿坐标转换附录8 矩阵函数附录8.1矩阵分析函数名功能描述函数名功能描述cond 求矩阵的条件数 rcond LINPACK倒数条件估计det 求矩阵的行列式 rref 矩阵的行阶梯型实现norm 求矩阵的范数 rrefmovie 消元法解方程演示null 右零空间 subspace 子空间orth 正交空间 trace 矩阵的迹rank 求矩阵的秩附录8.2线性方程函数名功能描述函数名功能描述/,\ 线性方程求解 nnls 非零最小二乘chol Cholesky分解 pinv 求伪逆矩阵inv 矩阵求逆 qr 矩阵的QR分解lscov 最小二乘方差 qrdelete QR分解中删除一行lu 矩阵的LU三角分解 qrinsert QR分解中插入一行附录8.3特征值与奇异值函数名功能描述函数名功能描述banlance 改进特征值精度的均衡变换 qz QZ算法求矩阵特征值cdf2rdf 复块对角阵到实块对角阵转换 rdf2cdf 实块对角阵到复块对角阵转换eig 求矩阵的特征值和特征向量 schur Schur分解hess 求Hessenberg矩阵 svd 奇异值分解poly 求矩阵的特征多项式附录8.4矩阵函数函数名功能描述函数名功能描述expm 矩阵指数函数 logm 矩阵对数函数funm 矩阵任意函数 sqrtm 矩阵平方根附录9 数据分析与Fourier变换函数附录9.1基本运算函数名功能描述函数名功能描述cumprod 向量累积 prod 对向量中各元素求积cumsum 向量累加 sort 对向量中各元素排序max 求向量中最大元素 sortrows 对矩阵中各行排序min 求向量中最小元素 std 求向量中各元素标准差mean 求向量中各元素均值 sum 对向量中各元素求和median 求向量中中间元素 trapz 梯形法求数值积分附录9.2微分计算函数名功能描述函数名功能描述del2 离散Laplace变换 gradient 梯度计算diff 差分于近视微分附录9.3滤波与卷积函数名功能描述函数名功能描述Conv 卷给与多项式乘法 filter 一维数字滤波conv2 二维卷积 filter2 二维数字滤波Deconv 因式分解与多项式乘法附录9.4方差处理函数名功能描述函数名功能描述corrcoef 相关系数计算 cov 协方差计算附录9.5Fourier变换函数名功能描述函数名功能描述abs 绝对值函数 fftshift fft与fft2输出重排angle 相角函数 ifft 离散Fourier逆变换cplxpair 依共轭复数对重新排序 ifft2 二维离散Fourier逆变换fft 离散Fourier变换 unwrap 相角矫正fft2 二维离散Fourier变换附录10 多项式处理函数附录10.1多项式处理函数名功能描述函数名功能描述conv 卷机与多项式乘法 polyfit 数据的多项式拟合deconv 因式分解与多项式乘法 polyval 多项式求值poly 求矩阵的特征多项式 polyvalm 多项式矩阵求值polyder 多项式求导 residue 部分分式展开polyeig 多项式特征值 roots 求多项式的根附录10.2数据插值函数名功能描述函数名功能描述griddata 数据网络的插值生成 interpft 一维插值(FFT方法)interp1 一维插值(查表) interpn 多维插值(查表)interp2 二维插值(查表) meshgrid 构造三维图形用x,y阵列interp3 三维插值(查表) spline 三次样条插值附录11 非线性数值方法函数名功能描述函数名功能描述dblquad 双重积分 odeget 获得微分方程求解的可选参数fmin 单变量最优化函数 odeset 设置微分方程求解的可选参数fmins 多变量最优化函数 quad 低阶数值积分方法ode45,ode23,ode113,ode15s,ode23s 微分方程数值解法 quad8 高阶数值积分方法odefile 对文件定义的微分方程求解附录12 稀疏矩阵函数附录12.1基本稀疏矩阵函数名功能描述函数名功能描述spdiags 稀疏对角矩阵 sprandn 稀疏正态分布随机矩阵speye 稀疏单位矩阵 sprandsym 稀疏对称随机矩阵sprand 稀疏均匀分布随机矩阵附录12.2稀疏矩阵转换函数名功能描述函数名功能描述find 查找非零元素下标 sparse 常规矩阵转换为稀疏矩阵full 稀疏矩阵转换为常规矩阵 spconvert 由外部格式引入稀疏矩阵附录12.3处理非零元素函数名功能描述函数名功能描述issparse 判断元素是否为稀疏矩阵 nzmax 允许的非零元素空间mmz 稀疏矩阵的非零元素个数 spalloc 为非零元素定位存储空间nonzeros 稀疏矩阵的非零元素 spfun 为非零元素定义处理函数附录12.4稀疏矩阵可视化函数名功能描述函数名功能描述gplot 绘制图论图形 spy 绘制稀疏矩阵结构附录12.5排序算法函数名功能描述函数名功能描述colmmd 列最小度排序 randperm 产生随机置换向量colperm 由非零元素的个数排序各列 symmd 对称最小度排序dmperm Dulmage-Mendelsohn分解 symrcm 反向Cuthill-McKee排序附录12.6范数、条件数函数名功能描述函数名功能描述condest 估算||*||1范数 normest 估算||*||2范数sprank 计算结构秩附录12.7特征值与奇异值函数名功能描述函数名功能描述eigs 求稀疏矩阵特征值和特征向量 svds 稀疏矩阵奇异值分解附录12.8其他函数名功能描述函数名功能描述spaugment 最小二乘算法形成 symbact 符号因子分解spparms 设置稀疏矩阵参数附录13 图形绘制附录13.1基本二维图形函数名功能描述函数名功能描述fill 填充二维多边形 polar 极坐标图形绘制loglog 全对数二维坐标绘制 semilogx x轴半对数坐标图形绘制plot 线性坐标图形绘制 semilogy y轴半对数坐标图形绘制附录13.2基本三维图形函数名功能描述函数名功能描述fill3 三维多边形填充 plot3 三维线或点型图绘制mesh 三维网格图形绘制 surf 三维表面图形绘制附录13.3三维颜色控制函数名功能描述函数名功能描述brighten 图形亮度调整 hidden 网格图的网格线开关设置caxis 坐标轴伪彩色设置 shading 设置渲染模式colormap 调色板设置附录13.4三维光照模型函数名功能描述函数名功能描述diffuse 图象漫射处理 surf1 带光照的三维表面绘制lighting 光照模式设置 surfnorm 曲面法线specular 设置镜面反射附录13.5标准调色板设置函数名功能描述函数名功能描述bone 带有蓝色调的灰色的调色板 hot 以黑红黄白为基色的调色板cool 以天蓝粉色为基色的调色板 hsv 色度饱和度亮度调色板copper 线性铜色调的调色板 pink 粉色色调的调色板flag 以红白蓝黑为基色的调色板 prism 光谱颜色表gray 线性灰度调色板附录13.6三维视点控制函数名功能描述函数名功能描述rotate3d 设置三维旋转开关 viewmtx 求视转换矩阵view 设置视点附录13.7坐标轴控制函数名功能描述函数名功能描述axis 坐标轴标度设置 hold 设置当前图形保护模式axes 坐标轴位置设置 subplot 将图形窗口分成几个区域box 坐标轴盒状显示 zoom 二维图形缩放grid 坐标网格线开关设置附录13.8图形注解函数名功能描述函数名功能描述colorbar 颜色条设置 xlabel 给图形的x轴加文字说明gtext 在鼠标位置加文字说明 ylabel 给图形的y轴加文字说明text 在图形上加文字说明 zlabel 给图形的z轴加文字说明title 给图形加标题附录13.9拷贝与打印函数名功能描述函数名功能描述print 打印图形或将图形存盘 orient 设置纸的方向orintopt 设置打印机为默认值附录14 特殊图形附录14.1特殊二维图形函数名功能描述函数名功能描述area 区域填充 feather 羽状条形图绘制bar 条形图绘制 fplot 给定函数绘制barh 水平条形图绘制 hist 直方图绘制bar3 3维条形图绘制 pareto pareto图绘制bar3h 3维水平条形图绘制 pie 饼状图绘制comet 彗星状轨迹绘制 stem 离散序列图形绘制errorbar 误差条形图绘制 stairs 梯形图绘制附录14.2等高线及其他二维图形函数名功能描述函数名功能描述contour 等高线绘制 pcolor 伪色绘制contourf 等高线填充绘制 quiver 有向图(箭头)绘制contour3 三维等高线绘制 voronoil voronoi图绘制clabel 等高线高程标志附录14.3特殊三维图形函数名功能描述函数名功能描述comet3 三维彗星状轨迹绘制 slice 切片图meshc 带等高线的三维网格绘制 surfc 带等高线的三维表面绘制meshz 带零平面的三维网格绘制 trisurf 表面图形的三角绘制stem2 杆图绘制 trimesh 网格图形的三角绘制quiver3 三维箭头(有向图)绘制 waterfall 瀑布型图形的绘制附录14.4图象显示与文件I/O函数名功能描述函数名功能描述brighten 图形色调亮化 image 图像显示colorbar 颜色条设置 imfinfo 图形文件信息colormap 调色板设置 imread 从文件读取图形contrast 灰度对比度设置 imwrite 保存图像附录14.5动画处理函数名功能描述函数名功能描述capture 屏幕抓取 movie 播放动画帧getframe 获取动画帧附录14.6实体模型函数名功能描述函数名功能描述cylinder 圆柱体生成 sphere 球体生成附录15 图形处理附录15.1图形窗口生成与控制函数名功能描述函数名功能描述clf 清除当前图形窗口 gcf 获取当前图形的窗口句柄close 关闭图形窗口 refresh 图形窗口刷新figure 生成图形窗口 shg 显示图形窗口附录15.2坐标轴建立与控制函数名功能描述函数名功能描述axes 坐标轴标度设置 gca 获得当前坐标轴句柄axis 坐标轴位置设置 hold 设置当前图形保护模式box 坐标轴盒状显示 ishold 返回hold的状态caxis 为彩色坐标轴刻度 subplot 将图形窗口分为几个区域cla 清除当前坐标轴附录15.3处理图形对象函数名功能描述函数名功能描述axes 坐标轴生成 surface 表面生成figure 图形窗口生成 text 文本生成image 图像生成 unicontrol 生成一个用户接口控制light 光源生成 uimenu 菜单生成line 线生成附录15.4图形函数名功能描述函数名功能描述copyobj 图像对象拷贝 gcbo 获得当前回调对象的句柄delete 对象删除 gco 获得当前对象的句柄drawnow 消除未解决的图像对象事件 get 获得对象属性findobj 查找对象 reset 重新设置对象属性gebf 获得当前回调窗口的句柄 set 设置对象属性附录16 GUI(图形用户接口)附录16.1GUI函数函数名功能描述函数名功能描述ginput 获取鼠标输入 uiresume 继续执行selectmoveresize 对象的选择、移动、大小设置、拷贝 uiwait 中断执行uicontrol 生成图形用户接口对象 waitgorbutterpress 等待按钮输入uimenu 生成菜单对象 waitfor 中断执行附录16.2GUI设计工具函数名功能描述函数名功能描述align 坐标轴与用户接口控制的对齐工具 menuedit 菜单编辑器cbedit 回调函数编辑器 propedit 属性编辑器guide GUI设计工具附录16.3对话框函数名功能描述函数名功能描述dialog 对话框生成 printdlg 打印对话框axlimdig 坐标轴设限对话框 questdlg 请求对话框errordlg 错误对话框 uigetfile 标准的打开文件对话框helpdlg 帮助对话框 uiputfile 标准的保存文件对话框inputdlg 输入对话框 uisetcolor 颜色选择对话框listdlg 列表选择对话框 uisetfont 字体选择对话框msgdlg 消息对话框 waitbar 等待条显示pagedlg 页位置对话框 warndlg 警告对话框附录16.4菜单函数名功能描述函数名功能描述makemenu 生成菜单结构 umtoggle 菜单对象选中状态切换menubar 设置菜单条属性 wimenu 生成window菜单项的子菜单附录16.5组按钮函数名功能描述函数名功能描述btndown 组按钮中的按钮按下 btnstate 查询按钮中的按钮状态btngroup 组按钮生成 btnup 组按钮中的按钮弹起btnpress 组按钮中的按钮按下管理附录16.6自定义窗口属性函数名功能描述函数名功能描述clruprop 清除用户自定义属性 setuprop 设置用户自定义属性getuprop 获取用户自定义属性附录16.7其他应用函数名功能描述函数名功能描述allchild 获取所有子对象 popupstr 获取弹出式菜单选中项的字符串edtext 坐标轴文本对象编辑 remapfig 改变窗口中对象的位置findall 查找所有对象 setptr 设置窗口指针getptr 获得窗口指针 setstatus 设置窗口中文本传状态getstatus 获取窗口中文本状态附录17 声音处理函数名功能描述函数名功能描述soond 将向量转换成声音 wavread 读。
利⽤Matlab绘制有趣图像的⽰例代码⽬录1.随机樱花树2.苹果绘制3.南⽠绘制4.⼀堆三⾓形绘制5.⽉饼绘制6.⼤钻⽯绘制7.有趣曲线18.有趣曲线29.有趣曲线3——蝴蝶曲线10.有趣曲线4——⼼形曲线11.有趣曲线512.会害羞的含羞草13.随机雪景1.随机樱花树function sakura% @author:slandarer% 随机形状⼆叉树樱花树绘制hold on,axis equalaxis(0.5+[-10,50,0,50])set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')set(gca,'color',[0.5020 0.5020 0.5020])length_trunk=6;width_trunk=4;k1=0.9;k2=0.8;number_branch=15;alp=pi/10;length_branch=k1*length_trunk;width_branch=k2*width_trunk;trunk=[12,0;12,length_trunk];plot(trunk(:,1),trunk(:,2),'color',[0 0 0],'Linewidth',width_trunk)begins=[trunk(2,:),pi/2,1];grow=begins;plotdata=[0 0 0 0 0 0 0 0];plotdata(1,:)=[];for i=1:number_branchcontrol=randi(25,[length(grow(:,1)),1])>=10;ag=grow(:,3);l=length(ag);parta=[length_branch.*k1.^grow(:,4).*cos(ag+ones(l,1)*alp),length_branch.*k1.^grow(:,4).*sin(ag+ones(l,1)*alp),ones(l,1)*alp,ones(l,1)]; partb=[length_branch.*k1.^grow(:,4).*cos(ag-ones(l,1)*alp),length_branch.*k1.^grow(:,4).*sin(ag-ones(l,1)*alp),-ones(l,1)*alp,ones(l,1)]; parta2=[0.8.*length_branch.*k1.^grow(:,4).*cos(ag),0.8.*length_branch.*k1.^grow(:,4).*sin(ag),zeros(l,1),ones(l,1)];partb2=[0.8.*length_branch.*k1.^grow(:,4).*cos(ag),0.8.*length_branch.*k1.^grow(:,4).*sin(ag),zeros(l,1),ones(l,1)];parta=control.*parta+(1-control).*parta2;partb=control.*partb+(1-control).*partb2;parta=parta+grow;partb=partb+grow;congress=[parta;partb];grow=[grow;grow];judge=[grow,congress];judge=unique(judge,'rows');grow=judge(:,5:end);plotdata=[plotdata;judge];endfor i=1:number_branchtemp_w=width_branch*0.8^i;temp_branch=plotdata(plotdata(:,4)==i,:);plx=[temp_branch(:,1),temp_branch(:,5)];ply=[temp_branch(:,2),temp_branch(:,6)];plx=plx';ply=ply';plot(plx,ply,'color',[0 0 0]+i*[0.3020 0.3020 0.3020]./number_branch,'Linewidth',temp_w)endbloom_pos=plotdata(plotdata(:,8)==number_branch+1,[5,6]);scatter(bloom_pos(:,1),bloom_pos(:,2),10,'CData',[0.8549 0.6824 0.6824]) bloom_pos=plotdata(plotdata(:,8)==number_branch,[5,6]);scatter(bloom_pos(:,1),bloom_pos(:,2),8,'CData',[0.7451 0.5961 0.5961].*0.97) end2.苹果绘制function appleG[u,v]=meshgrid(linspace(-pi,pi,100));XMesh=(1+cos(v)).*cos(u)+0.085.*cos(5.*u)+(0.994.*v./pi).^100;YMesh=(1+cos(v)).*sin(u);ZMesh=(6.*sin(v)+2.*cos(v)-2.9.*log(1-v./pi))./4.2;ax=gca;ax.DataAspectRatio=[1 1 1];hold on;grid onsurf(XMesh,YMesh,ZMesh,'FaceColor',[140,192,30]./255,'EdgeColor','none')view(45,25)h=light;h.Color=[1 1 1];h.Style='infinite';end3.南⽠绘制% 构造⽹格[t,p]=meshgrid(linspace(0,2*pi,200),linspace(0,pi-.05,200));% ⼆元分段函数foutline=@(t,p)(p<=.14).*90.*cos(7.*p)+(p>.14).*(cos(20.*t)+70).*(p.*(pi-p+.1)).^.2; % 球⾯坐标转化为X,Y,Zh=cos(p).*foutline(t,p);R=sin(p).*foutline(t,p);R=R;X=cos(t).*R;Y=sin(t).*R;% 颜⾊矩阵构造CMap=ones([size(t),3]);tMap=ones(size(t));c1=[253,158,3]./255;c2=[76,103,86]./255;for i=1:3tMap(:,:)=c1(i);tMap(p<=.14)=c2(i);CMap(:,:,i)=tMap;endfigure()surf(X,Y,h,'CData',CMap,'EdgeColor',[0,0,0],'EdgeAlpha',.2)4.⼀堆三⾓形绘制function tritritri% @author:slandarerhold on,axis equalaxis([-10,10,-10,10])set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')set(gca,'color','w')for N=1:5drawTri([0,0],[cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*5,...[cos(pi/2+pi/5+2*N*pi/5),sin(pi/2+pi/5+2*N*pi/5)].*5,10)drawTri([0,0],[cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*5,...[cos(pi/2-pi/5+2*N*pi/5),sin(pi/2-pi/5+2*N*pi/5)].*5,10)endL5=5/sin(pi/2-pi/10)*sin(pi/5);L5s=(5+L5)/sin(3*pi/10)*sin(3*pi/5);for N=1:5drawPent([cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*5,...[cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*(5+L5),...[cos(pi/2+pi/10+2*N*pi/5),sin(pi/2+pi/10+2*N*pi/5)].*L5s,...[cos(pi/2+pi/5+2*N*pi/5),sin(pi/2+pi/5+2*N*pi/5)].*(5+L5),...[cos(pi/2+pi/5+2*N*pi/5),sin(pi/2+pi/5+2*N*pi/5)].*5,15)drawPent([cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*5,...[cos(pi/2+2*N*pi/5),sin(pi/2+2*N*pi/5)].*(5+L5),...[cos(pi/2-pi/10+2*N*pi/5),sin(pi/2-pi/10+2*N*pi/5)].*L5s,...[cos(pi/2-pi/5+2*N*pi/5),sin(pi/2-pi/5+2*N*pi/5)].*(5+L5),...[cos(pi/2-pi/5+2*N*pi/5),sin(pi/2-pi/5+2*N*pi/5)].*5,15)end% 功能函数================================================================= function drawTri(A,B,C,times)LW=1.2;COLOR=[0 0 0];k=1/6;k2=0.8;plot([A(1);B(1)],[A(2);B(2)],'color',COLOR,'Linewidth',LW)plot([B(1);C(1)],[B(2);C(2)],'color',COLOR,'Linewidth',LW)plot([C(1);A(1)],[C(2);A(2)],'color',COLOR,'Linewidth',LW)for i=1:timesb=k*(C-B)+B;plot([A(1);b(1)],[A(2);b(2)],'color',COLOR,'Linewidth',LW);B=b;pause(0.01)c=k*(A-C)+C;plot([B(1);c(1)],[B(2);c(2)],'color',COLOR,'Linewidth',LW);C=c;pause(0.01)a=k*(B-A)+A;plot([C(1);a(1)],[C(2);a(2)],'color',COLOR,'Linewidth',LW);A=a;pause(0.01)LW=LW*k2;endendfunction drawPent(A,B,C,D,E,times)LW=1.2;COLOR=[0 0 0];k=1/4;k2=0.9;plot([A(1);B(1)],[A(2);B(2)],'color',COLOR,'Linewidth',LW)plot([B(1);C(1)],[B(2);C(2)],'color',COLOR,'Linewidth',LW)plot([C(1);D(1)],[C(2);D(2)],'color',COLOR,'Linewidth',LW)plot([D(1);E(1)],[D(2);E(2)],'color',COLOR,'Linewidth',LW)plot([E(1);A(1)],[E(2);A(2)],'color',COLOR,'Linewidth',LW)for i=1:timesb=k*(C-B)+B;plot([A(1);b(1)],[A(2);b(2)],'color',COLOR,'Linewidth',LW);B=b;pause(0.01)c=k*(D-C)+C;plot([B(1);c(1)],[B(2);c(2)],'color',COLOR,'Linewidth',LW);C=c;pause(0.01)d=k*(E-D)+D;plot([C(1);d(1)],[C(2);d(2)],'color',COLOR,'Linewidth',LW);D=d;pause(0.01)e=k*(A-E)+E;plot([D(1);e(1)],[D(2);e(2)],'color',COLOR,'Linewidth',LW);E=e;pause(0.01)a=k*(B-A)+A;plot([E(1);a(1)],[E(2);a(2)],'color',COLOR,'Linewidth',LW);A=a;pause(0.01)LW=LW*k2;endendend5.⽉饼绘制function moonCake% @author:slandarerax=gca;hold(ax,'on');axis equalax.XLim=[-15,15];ax.YLim=[-15,15];CSet=[0.92 0.51 0.11;1 0.7 0.09;0.87 0.41 0.05];for i=[1:7,9,8]if i==1tt=linspace(0,-pi/16,100);elseif i==9tt=linspace(-pi+pi/16,-pi,100);elsett=linspace(-pi/16-(i-2)*pi/8,-pi/16-(i-1)*pi/8,100);endxSet=cos(tt).*(10+abs(cos(tt.*8)));xMin=find(xSet==min(xSet));tt(xMin)xMax=find(xSet==max(xSet));t1=min([xMin(1),xMax(1)]);t2=max([xMin(1),xMax(1)]);xSet=cos(tt(t1:t2)).*(10+abs(cos(tt(t1:t2).*8)));ySet=sin(tt(t1:t2)).*(10+abs(cos(tt(t1:t2).*8)))-3;fill([xSet(1),xSet,xSet(end)],[ySet(1)+3,ySet,ySet(end)+3],CSet(mod(i,2)+1,:),'EdgeColor','none') endt=linspace(0,2*pi,640);fill(cos(t).*(10+abs(cos(t.*8))),sin(t).*(10+abs(cos(t.*8))),CSet(1,:),'EdgeColor','none')plot(cos(t).*(9+abs(cos(t.*8))),sin(t).*(9+abs(cos(t.*8)))-0.3,'Color',CSet(3,:),'LineWidth',6)plot(cos(t).*8.7,sin(t).*8.7-0.3,'Color',CSet(3,:),'LineWidth',4)plot(cos(t).*(9+abs(cos(t.*8))),sin(t).*(9+abs(cos(t.*8))),'Color',CSet(2,:),'LineWidth',6)plot(cos(t).*8.7,sin(t).*8.7,'Color',CSet(2,:),'LineWidth',4)plot([0 0],[-7 7]-0.3,'Color',CSet(3,:),'LineWidth',4)plot([-7 7],[0 0]-0.3,'Color',CSet(3,:),'LineWidth',4)plot([0 0],[-7 7],'Color',CSet(2,:),'LineWidth',4)plot([-7 7],[0 0],'Color',CSet(2,:),'LineWidth',4)t4=linspace(0,pi/2,100);xSet4=[cos(t4).*6+1,1,6,cos(t4(1:end-12)).*5+1,2,4.8,cos(t4(17:end-40)).*3.9+1];ySet4=[sin(t4).*6+1,1,1,sin(t4(1:end-12)).*5+1,2,2,sin(t4(17:end-40)).*3.9+1];plot(xSet4,ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)plot(-xSet4,ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)plot(xSet4,-ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)plot(-xSet4,-ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)plot(xSet4,ySet4,'Color',CSet(2,:),'LineWidth',4)plot(-xSet4,ySet4,'Color',CSet(2,:),'LineWidth',4)plot(xSet4,-ySet4,'Color',CSet(2,:),'LineWidth',4)plot(-xSet4,-ySet4,'Color',CSet(2,:),'LineWidth',4)end6.⼤钻⽯绘制function diamondx2% @author:slandarerhold onax=gca;axis equalgrid onax.GridLineStyle='--';ax.LineWidth=1.2;ax.XLim=[-2,2];ax.YLim=[-2,2];ax.ZLim=[-1.8,1.5];ax.XColor=[1,1,1].*0.4;ax.YColor=[1,1,1].*0.4;ax.ZColor=[1,1,1].*0.4;ax.DataAspectRatio=[1,1,1];ax.DataAspectRatioMode='manual';ax.CameraPosition=[-67.6287 -204.5276 82.7879];light('Position',[5,6,5])light('Position',[5,6,5])faceColor=[0 71 177];facePara={faceColor./255,'FaceAlpha',0.4,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.2,...'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.8,'AmbientStrength',0.7}; % ⾯参数drawDiamond(facePara)faceColor=[237 64 153];facePara={faceColor./255,'FaceAlpha',0.4,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.2,... 'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.8,'AmbientStrength',0.7}; % ⾯参数drawDiamond(facePara)function drawDiamond(facePara)thetaSet8=linspace(0,2*pi-pi/4,8)';thetaSet16=linspace(0,2*pi-pi/8,16)';% 绘制最上⽅⼋边形pntSet1=[cos(thetaSet8),sin(thetaSet8),ones(8,1)];fill3(pntSet1(:,1),pntSet1(:,2),pntSet1(:,3),facePara{:})% ⼀圈8个三⾓形pntSet2=[cos(thetaSet8+pi/8).*1.3,sin(thetaSet8+pi/8).*1.3,ones(8,1).*0.7];for i=1:8p1=i;p2=mod(i,8)+1;p3=i;fill3([pntSet1([p1,p2],1);pntSet2(p3,1)],...[pntSet1([p1,p2],2);pntSet2(p3,2)],...[pntSet1([p1,p2],3);pntSet2(p3,3)],facePara{:})end% ⼀圈8个四边形pntSet3=[cos(thetaSet8).*1.7,sin(thetaSet8).*1.7,ones(8,1).*0.3];for i=1:8p1=mod(i,8)+1;p2=i;p3=p1;p4=p1;fill3([pntSet1(p1,1);pntSet2(p2,1);pntSet3(p3,1);pntSet2(p4,1)],...[pntSet1(p1,2);pntSet2(p2,2);pntSet3(p3,2);pntSet2(p4,2)],...[pntSet1(p1,3);pntSet2(p2,3);pntSet3(p3,3);pntSet2(p4,3)],facePara{:})end% ⼀圈16个三⾓形pntSet4=[cos(thetaSet16).*1.7,sin(thetaSet16).*1.7,ones(16,1).*0.3];for i=1:8p1=i;p2=2*i-1;p3=2*i;fill3([pntSet2(p1,1);pntSet4([p2,p3],1)],...[pntSet2(p1,2);pntSet4([p2,p3],2)],...[pntSet2(p1,3);pntSet4([p2,p3],3)],facePara{:})p2=2*i;p3=mod(2*i,16)+1;fill3([pntSet2(p1,1);pntSet4([p2,p3],1)],...[pntSet2(p1,2);pntSet4([p2,p3],2)],...[pntSet2(p1,3);pntSet4([p2,p3],3)],facePara{:})end% ⼀圈16个四边⾓形pntSet5=[cos(thetaSet16).*1.7,sin(thetaSet16).*1.7,ones(16,1).*0.15];for i=1:16p1=i;p2=mod(i,16)+1;p3=mod(i,16)+1;p4=i;fill3([pntSet4(p1,1);pntSet4(p2,1);pntSet5(p3,1);pntSet5(p4,1)],...[pntSet4(p1,2);pntSet4(p2,2);pntSet5(p3,2);pntSet5(p4,2)],...[pntSet4(p1,3);pntSet4(p2,3);pntSet5(p3,3);pntSet5(p4,3)],facePara{:})endpntSet6=[cos(thetaSet8+pi/8).*0.4,sin(thetaSet8+pi/8).*0.4,ones(8,1).*(-1.15)];% ⼀圈16个长三⾓形for i=1:8p1=i;p2=2*i-1;p3=2*i;fill3([pntSet6(p1,1);pntSet5([p2,p3],1)],...[pntSet6(p1,2);pntSet5([p2,p3],2)],...[pntSet6(p1,3);pntSet5([p2,p3],3)],facePara{:})p2=2*i;p3=mod(2*i,16)+1;fill3([pntSet6(p1,1);pntSet5([p2,p3],1)],...[pntSet6(p1,2);pntSet5([p2,p3],2)],...[pntSet6(p1,3);pntSet5([p2,p3],3)],facePara{:})end% ⼀圈8个长四边形pntSet7=[cos(thetaSet8).*1.7,sin(thetaSet8).*1.7,ones(8,1).*0.15];for i=1:8p1=mod(i,8)+1;p2=i;p4=mod(i,8)+1;fill3([pntSet7(p1,1);pntSet6(p2,1);0;pntSet6(p4,1)],...[pntSet7(p1,2);pntSet6(p2,2);0;pntSet6(p4,2)],...[pntSet7(p1,3);pntSet6(p2,3);-1.5;pntSet6(p4,3)],facePara{:})endendend7.有趣曲线1% 鱼形曲线hold onaxis equalgrid onX=0:1:1023;Y=0:1:1023;[gridX,gridY]=meshgrid(X,Y);FishPatternFcn=@(x,y)mod(abs(x.*sin(sqrt(x))+y.*sin(sqrt(y))).*pi./1024,1);contour(gridX,gridY,FishPatternFcn(gridX,gridY),[0.7,0.7])8.有趣曲线2% ⽣成⼀个40x40 DFT矩阵% 并在复平⾯将点连接起来plot(fft(eye(40)));axis equal9.有趣曲线3——蝴蝶曲线x=linspace(0,2*pi,1000);hdl=polarplot(x,sin(x)+sin(3.5.*x).^3,'LineWidth',1.5);ax=gca;ax.RTick=[];10.有趣曲线4——⼼形曲线function loveFunc% @author:slandarerLoveFunchdl=@(x,a)(x.^2).^(1/3)+0.9.*((3.3-x.^2).^(1/2)).*sin(a.*pi.*x);hold ongrid onaxis([-3 3,-2 4])x=-1.8:0.01:1.8;text(0,3.3,'$f(x)=x^{\frac{2}{3}}+0.9(3.3-x^2)^{\frac{1}{2}}\sin(\alpha\pi x)$',...'FontSize',13,'HorizontalAlignment','center','Interpreter','latex');txt2=text(-0.35,2.9,'','FontSize',13,'HorizontalAlignment','left','Interpreter','latex','tag','alphadata'); hdl=plot(x,LoveFunchdl(x,1),'color',[0.2118 0.4667 0.9961],'LineWidth',1.5);for a=1:0.01:20AlphaString=['$\alpha=',num2str(a),'$'];Color=([1.0000 0.4902 0.6627]-[0.2118 0.4667 0.9961]).*(a/20)+[0.2118 0.4667 0.9961];set(txt2,'string',AlphaString)hdl.YData=LoveFunchdl(x,a);hdl.Color=Color;drawnowendend11.有趣曲线5[x,y]=meshgrid(-10:.01:10,-10:.01:10);cm=cos(cos(min(sin(x)+y,x+sin(y))))-cos(sin(max(sin(y)+x,y+sin(x))))>0;imshow(cm)12.会害羞的含羞草function mimose% @author:slandarer% ========================================================================= % <构造含羞草叶⼦轮廓曲线>% ⼤体是画⼀个⼀个压扁倾斜的半圆弧拼在⼀起% 然后乘以⼀个类似弧形曲线让每⽚⼩叶⼦不⼀样长% 计算⼀个压扁倾斜的半圆弧曲线t1=0:pi/100:pi+2*pi/100;y=5*abs(sin(t1).^(1/2));y(t1>pi)=-y(t1>pi);t1=t1.*cos(pi/9)-y.*sin(pi/9);y=t1.*sin(pi/9)+y.*cos(pi/9);% 将多个压扁倾斜的半圆弧曲线拼接T=[];Y=[];for i=1:20T=[T,(i-1)*(pi+2*pi/100)+t1];Y=[Y,y];end% 乘以⼀个类似弧形曲线让每⽚⼩叶⼦不⼀样长L=length(T);t2=linspace(pi/8,pi-2*pi/5,L);Y=Y.*sin(t2);% 旋转并调整⽐例X=T.*cos(pi)-Y.*sin(pi);Y=T.*sin(pi)+Y.*cos(pi);X=X-min(X);X=X.*0.8;Y=Y.*1.5;% 创建figure及axes=========================================================fig=figure('units','pixels',...'position',[500 100 500 500],...'Numbertitle','off',...'Color',[1 1 1],...'resize','off',...'visible','on',...'name','mimose',...'menubar','none');ax=axes('Units','pixels',...'parent',fig,...'Color',[0.2667 0.4039 0.2745],...'Position',[0 0 500 500],...'XLim',[0 100],...'YLim',[0 100],...'XColor',[1 1 1],...'YColor',[1 1 1]);hold(ax,'on')%plot(ax,X+20,Y+50)% 调⽤后⾯定义的函数绘图===================================================% 绘制树枝drawBranch([20,0],[50,10])drawBranch([20,0],[35,12])drawBranch([0,0],[15,45])drawBranch([4,0],[0,20])% 绘制树叶leaf.l1=drawLeaf([50,10]+1.*[cos(pi/1.7),sin(pi/1.7)],pi/1.7,X,Y,0.8,1);leaf.l2=drawLeaf([50,10]+1.*[cos(-pi/8),sin(-pi/8)],-pi/8,X,Y,0.8,1);leaf.l3=drawLeaf([50,10]+1.*[cos(pi/12),sin(pi/12)],pi/12,X,Y,1,1);leaf.l4=drawLeaf([50,10]+1.*[cos(pi/3),sin(pi/3)],pi/3,X,Y,1,1);leaf.l5=drawLeaf([0,45]+1.*[cos(pi/3),sin(pi/3)],pi/3,X,Y,1,1);leaf.l6=drawLeaf([0,30]+1.*[cos(pi/5),sin(pi/5)],pi/5,X,Y,1,1);% 绘制花朵flower.fl1=drawFlower([35,12]);flower.fl2=drawFlower([20,5]);% ⿏标移动回调============================================================= fps=25;mitimer=timer('ExecutionMode', 'fixedRate', 'Period',1/fps, 'TimerFcn', @miMove);start(mitimer)% 花朵树叶回缩函数function miMove(~,~)for ii=1:6if leaf.(['l',num2str(ii)]).ratio<1 %如果收缩率⼩于1则每隔⼀段时间+0.05,以下同理leaf.(['l',num2str(ii)]).ratio=leaf.(['l',num2str(ii)]).ratio+0.05;endresetH(leaf.(['l',num2str(ii)]),X,Y); % 依据收缩率重新绘制叶⼦endfor ii=1:2if flower.(['fl',num2str(ii)]).ratio<1flower.(['fl',num2str(ii)]).ratio=flower.(['fl',num2str(ii)]).ratio+0.05;endresetL(flower.(['fl',num2str(ii)]));endendset(gcf,'WindowButtonMotionFcn',@whilemovefcn)% ⿏标移动调⽤的函数function whilemovefcn(~,~)% 检测⿏标位置xy=get(gca,'CurrentPoint');xw=xy(1,1);yw=xy(1,2);pos=[xw,yw];% ⿏标附近的叶⼦收缩率-0.2for ii=1:6LF=leaf.(['l',num2str(ii)]);if closeLeaf(LF.pos1,LF.pos2,pos)% 如果距离叶⼦距离⾜够近if leaf.(['l',num2str(ii)]).ratio>0.2leaf.(['l',num2str(ii)]).ratio=leaf.(['l',num2str(ii)]).ratio-0.2;endendend% ⿏标附近的花收缩率-0.2for ii=1:2FL=flower.(['fl',num2str(ii)]);if closeFlower(FL.pos,pos)% 如果距离花距离⾜够近if flower.(['fl',num2str(ii)]).ratio>0.6flower.(['fl',num2str(ii)]).ratio=flower.(['fl',num2str(ii)]).ratio-0.2;endendendend% 距离检测函数,叶⼦形状近乎于椭圆,当距离俩焦点和⼩于⼀定值认为⾜够近% 若⾜够近返回TRUE 否则返回FALSEfunction bool=closeLeaf(pos1,pos2,pos3)pL=pos1+(pos2-pos1).*0.1;pR=pos1+(pos2-pos1).*0.9;lTotal=norm(pL-pos3)+norm(pR-pos3);bool=lTotal<=norm(pos1-pos2);end% 距离检测函数,花形状近乎于圆,当距离圆⼼⼩于⼀定值认为⾜够近% 若⾜够近返回TRUE 否则返回FALSEfunction bool=closeFlower(pos1,pos2)bool=norm(pos1-pos2)<=5;end% 依据收缩率重新计算并绘制叶⼦function resetH(lf,X,Y)X=X.*lf.Len;Y=Y.*lf.h.*lf.ratio;xl1=X.*cos(lf.alf)-Y.*sin(lf.alf)+lf.pos1(1);yl1=X.*sin(lf.alf)+Y.*cos(lf.alf)+lf.pos1(2);xl2=X.*cos(lf.alf)+Y.*sin(lf.alf)+lf.pos1(1);yl2=X.*sin(lf.alf)-Y.*cos(lf.alf)+lf.pos1(2);XL=[xl1,xl2(end:-1:1)];YL=[yl1,yl2(end:-1:1)];set(lf.LHdl,'XData',XL,'YData',YL);end% 依据收缩率重新计算并绘制花朵function resetL(fl)xf=fl.x.*fl.ratio+fl.pos(1);yf=fl.y.*fl.ratio+fl.pos(2);xxf(2:2:2*length(xf))=xf;yyf(2:2:2*length(yf))=yf;xxf(1:2:2*length(xf))=fl.pos(1);yyf(1:2:2*length(yf))=fl.pos(2);%set(fl.plHdl,'XData',xxf,'YData',yyf);set(fl.scHdl,'XData',xf,'YData',yf);set(fl.plHdl,'XData',xxf,'YData',yyf);end% 绘制花朵(圆⼼)function fl=drawFlower(pos)% 随机⽣成⼀些点作为花蕊并绘图theta=rand([1,120]).*2.*pi;r=rand([1,120]).*3+5;xf=r.*cos(theta)+pos(1);yf=r.*sin(theta)+pos(2);xxf(2:2:2*length(xf))=xf;yyf(2:2:2*length(yf))=yf;xxf(1:2:2*length(xf))=pos(1);yyf(1:2:2*length(yf))=pos(2);plHdl=plot(ax,xxf,yyf,'Color',[0.7608 0.4863 0.7216],'LineWidth',1);scHdl=scatter(ax,xf,yf,3,'filled','CData',[0.9569 0.9804 0.9333]);% 存储基础信息到实类fl.x=xf-pos(1);fl.y=yf-pos(2);fl.pos=pos;fl.scHdl=scHdl;fl.plHdl=plHdl;fl.ratio=1;% 计算可伸缩部分花蕊坐标,绘图,存储信息theta2=rand([1,80]).*2.*pi;r2=rand([1,80]).*1+3;xf2=r2.*cos(theta2)+pos(1);yf2=r2.*sin(theta2)+pos(2);xxf2=[ones([1,length(xf2)]).*pos(1);xf2];yyf2=[ones([1,length(yf2)]).*pos(2);yf2];plot(ax,xxf2,yyf2,'Color',[0.7804 0.6078 0.5020],'LineWidth',1)end% 绘制树枝(端点1,端点2)function drawBranch(pos1,pos2)% 依据起始及末尾两点计算⼀个⼀头宽⼀头窄四边形坐标数据并绘图dir=(pos2-pos1)./norm(pos2-pos1);len=norm(pos2-pos1);xb=[0 1 1 0].*len;yb=[len.*0.02,len.*0.012,-len.*0.012,-len.*0.02];xxb=xb.*dir(1)-yb.*dir(2)+pos1(1);yyb=xb.*dir(2)+yb.*dir(1)+pos1(2);fill(ax,xxb,yyb,[0.8157 0.6431 0.6078],'EdgeColor',[0.6157 0.5529 0.4510],'LineWidth',1.5)end% 绘制叶⼦(起始位置,叶⼦⽅向,轮廓x数据,轮廓y数据,轮廓x⽅向放缩⽐例,轮廓y⽅向放缩⽐例) function lf=drawLeaf(pos,alf,X,Y,l,h)X=X.*l; % 放缩叶⼦长度Y=Y.*h; % 放缩叶⼦宽窄% 叶⼦数据旋转并把两个叶⼦数据并在⼀起xl1=X.*cos(alf)-Y.*sin(alf)+pos(1);yl1=X.*sin(alf)+Y.*cos(alf)+pos(2);xl2=X.*cos(alf)+Y.*sin(alf)+pos(1);yl2=X.*sin(alf)-Y.*cos(alf)+pos(2);XL=[xl1,xl2(end:-1:1)];YL=[yl1,yl2(end:-1:1)];% 绘图lf.LHdl=fill(XL,YL,[0.4980 0.7216 0.3176]);% 基础数据存到实类⾥lf.pos1=pos;lf.pos2=[pos(1)+l*51*cos(alf),pos(2)+l*51*sin(alf)];lf.alf=alf;lf.Len=l;lf.h=h;lf.ratio=1;% 绘制⼀下叶⼦中线plot(ax,[pos(1),pos(1)+l*51*cos(alf)],[pos(2),pos(2)+l*51*sin(alf)],'Color',[0.6627 0.6980 0.4431],'LineWidth',3); endend13.随机雪景function snowCover% @author:slandarerMainFig=figure('units','pixels','position',[300 80 500 500],...'Numbertitle','off','menubar','none','resize','off',...'name','snow covered landscape');axes('parent',MainFig,'position',[0 0 1 1],...'XLim', [0 500],...'YLim', [0 500],...'NextPlot','add',...'layer','bottom',...'Visible','on',...'Color',[0 59 129]./255,...'XTick',[], ...'YTick',[]);hold on%画雪地==================================================================== layerBEPos=[150;140;100;90];layerColor=[146 210 245;101 183 231;0 101 181;0 59 129];excursion=15;interval=10;xSep=25;layerPos=zeros(size(layerBEPos,1),length(xSep:xSep:500));layerPos(:,1)=layerBEPos(:,1);for i=1:size(layerBEPos,1)for j=xSep:xSep:500listPos=round(j./xSep+1);tempRandi=randi([-excursion,excursion]);yPos=tempRandi+layerPos(i,listPos-1);if i>1&&yPos>=layerPos(i-1,listPos)-5yPos=layerPos(i-1,listPos)-interval;endyPos(yPos<0)=0;layerPos(i,listPos)=yPos;endendfor i=1:size(layerBEPos,1)XData=0:xSep:500;YData=layerPos(i,:);Yq=interp1(XData,YData,0:1:500,'spline');Xq=[0,0:1:500,500];Yq=[0 Yq 0];fill(Xq,Yq,layerColor(i,:)./255,'EdgeColor','none')end%画星星==================================================================== XRandiS=randi([50 450],[1,15]);YRandiS=randi([300 460],[1,15]);scatter(XRandiS,YRandiS,10,'o','filled','CData',[252 241 0]./255)XRandiB=randi([50 450],[1,15]);YRandiB=randi([300 460],[1,15]);scatter(XRandiB,YRandiB,18,'o','filled','CData',[252 241 0]./255)%画雪花====================================================================snowXpos=[randi([0,30],[1,6]),randi([470,500],[1,6]),randi([0,500],[1,12])];snowYpos=[randi([220,470],[1,6]),randi([220,470],[1,6]),randi([470,500],[1,12])];snowSize=randi([25,50],[1,24]);snowAngle=2*pi*rand([1,24]);snowWidth=1+0.6*rand([1,24]);for i=1:24drawSnow(snowXpos(i),snowYpos(i),snowSize(i),snowAngle(i),snowWidth(i))end%画⽉亮====================================================================moonPos=[320 300]+[randi([0 50]),randi([0 80])];moonSize=randi([28 32]);blankPos=randi([floor(0.3*moonSize) ceil(0.5*moonSize)],[1,2]);drawMoon(moonPos(1),moonPos(2),moonSize,moonPos(1)-blankPos(1),moonPos(2)+blankPos(2))%相关函数==================================================================function drawMoon(x,y,R,bx,by)t=0:pi/50:2*pi;X=x+cos(t).*R;Y=y+sin(t).*R;BX=bx+cos(t).*R;BY=by+sin(t).*R;fill(X,Y,[255 251 219]./255,'EdgeColor','none')fill(BX,BY,[0 59 129]./255,'EdgeColor','none')endfunction drawSnow(x,y,len,angle,width)for theta=0:pi/3:2*pi-pi/3xTail=cos(theta+angle)*len+x;yTail=sin(theta+angle)*len+y;plot([x,xTail],[y,yTail],'color',[0 134 207]./255,'lineWidth',width)for branchRatio=[0.4 0.55 0.7]BX=x+cos(theta+angle)*len*branchRatio;BY=y+sin(theta+angle)*len*branchRatio;LX=BX+cos(theta+angle+pi/3).*len.*0.4;LY=BY+sin(theta+angle+pi/3).*len.*0.4;RX=BX+cos(theta+angle-pi/3).*len.*0.4;RY=BY+sin(theta+angle-pi/3).*len.*0.4;plot([BX,LX],[BY,LY],'color',[0 134 207]./255,'lineWidth',width.*0.8)plot([BX,RX],[BY,RY],'color',[0 134 207]./255,'lineWidth',width.*0.8)endendendend以上就是利⽤Matlab绘制有趣图像的⽰例代码的详细内容,更多关于Matlab绘制图像的资料请关注其它相关⽂章!。
matlab十个简单案例编写1. 求解线性方程组线性方程组是数学中常见的问题之一,而MATLAB提供了用于求解线性方程组的函数。
例如,我们可以使用"linsolve"函数来求解以下线性方程组:2x + 3y = 74x - 2y = 2代码如下所示:A = [2, 3; 4, -2];B = [7; 2];X = linsolve(A, B);disp(X);解释:上述代码定义了一个2x2的矩阵A和一个2x1的矩阵B,分别表示线性方程组的系数矩阵和常数向量。
然后,使用linsolve函数求解线性方程组,结果存储在X中,并通过disp函数打印出来。
运行代码后,可以得到x=2和y=1的解。
2. 求解非线性方程除了线性方程组外,MATLAB还可以用于求解非线性方程。
例如,我们可以使用"fzero"函数求解以下非线性方程:x^2 + 2x - 3 = 0代码如下所示:fun = @(x) x^2 + 2*x - 3;x0 = 0;x = fzero(fun, x0);disp(x);解释:上述代码定义了一个匿名函数fun,表示非线性方程。
然后,使用fzero函数传入fun和初始值x0来求解非线性方程的根,并通过disp函数打印出来。
运行代码后,可以得到x=1的解。
3. 绘制函数图像MATLAB提供了强大的绘图功能,可以帮助我们可视化函数的形状和特征。
例如,我们可以使用"plot"函数绘制以下函数的图像:y = cos(x)代码如下所示:x = linspace(0, 2*pi, 100);y = cos(x);plot(x, y);解释:上述代码首先使用linspace函数生成一个从0到2π的100个等间距点的向量x,然后计算对应的cos值,并存储在向量y中。
最后,使用plot函数将x和y作为横纵坐标绘制出函数图像。
运行代码后,可以看到cos函数的周期性波动图像。
> 关系运算之大于[] 矩阵生成>= 关系运算之大于等于{} & 逻辑运算之与. 结构字段获取符| 逻辑运算之或. 点乘运算,常与其他运算符联合使用(如.\) ~ 逻辑运算之非xor 逻辑运算之异成附录2.2逻辑函数函数名功能描述函数名功能描述all 测试向量中所用元素是否为真is*(一类函数) 检测向量状态.其中*表示一个确定的函数(isinf)any 测试向量中是否有真元素*isa 检测对象是否为某一个类的对象exist 检验变量或文件是否定义logical 将数字量转化为逻辑量find 查找非零元素的下标附录3 语言结构与调试附录3.1编程语言函数名功能描述函数名功能描述builtin 执行Matlab内建的函数global 定义全局变量eval 执行Matlab语句构成的字符串nargchk 函数输入输出参数个数检验feval 执行字符串指定的文件script Matlab语句及文件信息function Matlab函数定义关键词附录3.2控制流程函数名功能描述函数名功能描述break 中断循环执行的语句if 条件转移语句case 与switch结合实现多路转移otherwise 多路转移中的缺省执行部分else 与if一起使用的转移语句return 返回调用函数elseif 与if一起使用的转移语句switch 与case结合实现多路转移end 结束控制语句块warning 显示警告信息error 显示错误信息while 循环语句for 循环语句附录3.3交互输入函数名功能描述函数名功能描述input 请求输入menu 菜单生成keyboard 启动键盘管理pause 暂停执行附录3.4面向对象编程函数名功能描述函数名功能描述class 生成对象isa 判断对象是否属于某一类double 转换成双精度型superiorto 建立类的层次关系inferiorto 建立类的层次关系unit8 转换成8字节的无符号整数inline 建立一个内嵌对象附录3.5调试函数名功能描述函数名功能描述dbclear 清除调试断点dbstatus 列出所有断点情况dbcont 调试继续执行dbstep 单步执行dbdown 改变局部工作空间内存dbstop 设置调试断点dbmex 启动对Mex文件的调试sbtype 列出带命令行标号的.M文件dbquit 退出调试模式dbup 改变局部工作空间内容dbstack 列出函数调用关系附录4 基本矩阵与矩阵处理附录4.1基本矩阵函数名功能描述函数名功能描述eye 产生单位阵rand 产生随机分布矩阵linspace 构造线性分布的向量randn 产生正态分布矩阵logspace 构造等对数分布的向量zeros 产生零矩阵ones 产生元素全部为1的矩阵: 产生向量附录4.2特殊向量与常量函数名功能描述函数名功能描述ans 缺省的计算结果变量non 非数值常量常由0/0或Inf/Inf获得computer 运行Matlab的机器类型nargin 函数中参数输入个数eps 精度容许误差(无穷小) nargout 函数中输出变量个数flops 浮点运算计数pi 圆周率i 复数单元realmax 最大浮点数值inf 无穷大realmin 最小浮点数值inputname 输入参数名varargin 函数中输入的可选参数j 复数单元varargout 函数中输出的可选参数附录4.3时间与日期函数名功能描述函数名功能描述calender 日历eomday 计算月末clock 时钟etime 所用时间函数cputime 所用的CPU时间now 当前日期与时间date 日期tic 启动秒表计时器datenum 日期(数字串格式) toc 读取秒表计时器datestr 日期(字符串格式) weekday 星期函数datevoc 日期(年月日分立格式)附录4.4矩阵处理函数名功能描述函数名功能描述cat 向量连接reshape 改变矩阵行列个数diag 建立对角矩阵或获取对角向量rot90 将矩阵旋转90度fliplr 按左右方向翻转矩阵元素tril 取矩阵的下三角部分flipud 按上下方向翻转矩阵元素triu 取矩阵的上三角部分repmat 复制并排列矩阵函数附录5 特殊矩阵函数名功能描述函数名功能描述compan 生成伴随矩阵invhilb 生成逆hilbert矩阵gallery 生成一些小的测试矩阵magic 生成magic矩阵hadamard 生成hadamard矩阵pascal 生成pascal矩阵hankel 生成hankel矩阵toeplitz 生成toeplitz矩阵hilb 生成hilbert矩阵wilkinson 生成wilkinson特征值测试矩阵附录6 数学函数附录6.1三角函数函数名功能描述函数名功能描述sin/asin 正弦/反正弦函数sec/asec 正割/反正割函数sinh/asinh 双曲正弦/反双曲正弦函数sech/asech 双曲正割/反双曲正割函数cos/acos 余弦/反余弦函数csc/acsc 余割/反余割函数cosh/acosh 双曲余弦/反双曲余弦函数csch/acsch 双曲余割/反双曲余割函数tan/atan 正切/反正切函数cot/acot 余切/反余切函数tanh/atanh 双曲正切/反双曲正切函数coth/acoth 双曲余切/反双曲余切函数atan2 四个象限内反正切函数附录6.2指数函数函数名功能描述函数名功能描述exp 指数函数log10 常用对数函数log 自然对数函数sqrt 平方根函数附录6.3复数函数函数名功能描述函数名功能描述abs 绝对值函数imag 求虚部函数angle 角相位函数real 求实部函数conj 共轭复数函数附录6.4数值处理函数名功能描述函数名功能描述fix 沿零方向取整round 舍入取整floor 沿-∞方向取整rem 求除法的余数ceil 沿+∞方向取整sign 符号函数附录6.5其他特殊数学函数函数名功能描述函数名功能描述airy airy函数erfcx 比例互补误差函数besselh bessel函数(hankel函数) erfinv 逆误差函数bessili 改进的第一类bessel函数expint 指数积分函数besselk 改进的第二类bessel函数gamma gamma函数besselj 第一类bessel函数gammainc 非完全gamma函数bessely 第二类bessel函数gammaln gamma对数函数beta beta函数gcd 最大公约数betainc 非完全的beta函数lcm 最小公倍数betaln beta对数函数log2 分割浮点数elipj Jacobi椭圆函数legendre legendre伴随函数ellipke 完全椭圆积分pow2 基2标量浮点数erf 误差函数rat 有理逼近erfc 互补误差函数rats 有理输出附录7 坐标转换函数名功能描述函数名功能描述cart2pol 笛卡儿坐标到极坐标转换pol2cart 极坐标到笛卡儿坐标转换cart2sph 笛卡儿坐标到球面坐标转换sph2cart 球面坐标到笛卡儿坐标转换附录8 矩阵函数附录8.1矩阵分析函数名功能描述函数名功能描述cond 求矩阵的条件数rcond LINPACK倒数条件估计det 求矩阵的行列式rref 矩阵的行阶梯型实现norm 求矩阵的范数rrefmovie 消元法解方程演示null 右零空间subspace 子空间orth 正交空间trace 矩阵的迹rank 求矩阵的秩附录8.2线性方程函数名功能描述函数名功能描述/,\ 线性方程求解nnls 非零最小二乘chol Cholesky分解pinv 求伪逆矩阵inv 矩阵求逆qr 矩阵的QR分解lscov 最小二乘方差qrdelete QR分解中删除一行lu 矩阵的LU三角分解qrinsert QR分解中插入一行附录8.3特征值与奇异值函数名功能描述函数名功能描述banlance 改进特征值精度的均衡变换qz QZ算法求矩阵特征值cdf2rdf 复块对角阵到实块对角阵转换rdf2cdf 实块对角阵到复块对角阵转换eig 求矩阵的特征值和特征向量schur Schur分解hess 求Hessenberg矩阵svd 奇异值分解poly 求矩阵的特征多项式附录8.4矩阵函数函数名功能描述函数名功能描述expm 矩阵指数函数logm 矩阵对数函数funm 矩阵任意函数sqrtm 矩阵平方根附录9 数据分析与Fourier变换函数附录9.1基本运算函数名功能描述函数名功能描述cumprod 向量累积prod 对向量中各元素求积cumsum 向量累加sort 对向量中各元素排序max 求向量中最大元素sortrows 对矩阵中各行排序min 求向量中最小元素std 求向量中各元素标准差mean 求向量中各元素均值sum 对向量中各元素求和median 求向量中中间元素trapz 梯形法求数值积分附录9.2微分计算函数名功能描述函数名功能描述del2 离散Laplace变换gradient 梯度计算diff 差分于近视微分附录9.3滤波与卷积函数名功能描述函数名功能描述Conv 卷给与多项式乘法filter 一维数字滤波conv2 二维卷积filter2 二维数字滤波Deconv 因式分解与多项式乘法附录9.4方差处理函数名功能描述函数名功能描述corrcoef 相关系数计算cov 协方差计算附录9.5Fourier变换函数名功能描述函数名功能描述abs 绝对值函数fftshift fft与fft2输出重排angle 相角函数ifft 离散Fourier逆变换cplxpair 依共轭复数对重新排序ifft2 二维离散Fourier逆变换fft 离散Fourier变换unwrap 相角矫正fft2 二维离散Fourier变换附录10 多项式处理函数附录10.1多项式处理函数名功能描述函数名功能描述conv 卷机与多项式乘法polyfit 数据的多项式拟合deconv 因式分解与多项式乘法polyval 多项式求值poly 求矩阵的特征多项式polyvalm 多项式矩阵求值polyder 多项式求导residue 部分分式展开polyeig 多项式特征值roots 求多项式的根附录10.2数据插值函数名功能描述函数名功能描述griddata 数据网络的插值生成interpft 一维插值(FFT方法)interp1 一维插值(查表)interpn 多维插值(查表)interp2 二维插值(查表)meshgrid 构造三维图形用x,y阵列interp3 三维插值(查表)spline 三次样条插值MATLAB:没她难办!我的兴趣小组:爱数学--数学及科学软件开发MY BLOG:平生惟有两行泪半为苍生半为君有关家国天下文常读无益身心道德事莫为作者:Guassfans专家分:4050会员信息发短消息所属BLOG 发表时间:2007-7-19 11:58:00 [回复] [引用]2 楼附录11 非线性数值方法函数名功能描述函数名功能描述dblquad 双重积分odeget 获得微分方程求解的可选参数fmin 单变量最优化函数odeset 设置微分方程求解的可选参数fmins 多变量最优化函数quad 低阶数值积分方法ode45,ode23,ode113,ode15s,ode23s 微分方程数值解法quad8 高阶数值积分方法odefile 对文件定义的微分方程求解附录12 稀疏矩阵函数附录12.1基本稀疏矩阵函数名功能描述函数名功能描述spdiags 稀疏对角矩阵sprandn 稀疏正态分布随机矩阵speye 稀疏单位矩阵sprandsym 稀疏对称随机矩阵sprand 稀疏均匀分布随机矩阵附录12.2稀疏矩阵转换函数名功能描述函数名功能描述find 查找非零元素下标sparse 常规矩阵转换为稀疏矩阵full 稀疏矩阵转换为常规矩阵spconvert 由外部格式引入稀疏矩阵附录12.3处理非零元素函数名功能描述函数名功能描述issparse 判断元素是否为稀疏矩阵nzmax 允许的非零元素空间mmz 稀疏矩阵的非零元素个数spalloc 为非零元素定位存储空间nonzeros 稀疏矩阵的非零元素spfun 为非零元素定义处理函数附录12.4稀疏矩阵可视化函数名功能描述函数名功能描述gplot 绘制图论图形spy 绘制稀疏矩阵结构附录12.5排序算法函数名功能描述函数名功能描述colmmd 列最小度排序randperm 产生随机置换向量colperm 由非零元素的个数排序各列symmd 对称最小度排序dmperm Dulmage-Mendelsohn分解symrcm 反向Cuthill-McKee排序附录12.6范数、条件数函数名功能描述函数名功能描述condest 估算||*||1范数normest 估算||*||2范数sprank 计算结构秩附录12.7特征值与奇异值函数名功能描述函数名功能描述eigs 求稀疏矩阵特征值和特征向量svds 稀疏矩阵奇异值分解附录12.8其他函数名功能描述函数名功能描述spaugment 最小二乘算法形成symbact 符号因子分解spparms 设置稀疏矩阵参数附录13 图形绘制附录13.1基本二维图形函数名功能描述函数名功能描述fill 填充二维多边形polar 极坐标图形绘制loglog 全对数二维坐标绘制semilogx x轴半对数坐标图形绘制plot 线性坐标图形绘制semilogy y轴半对数坐标图形绘制函数名功能描述函数名功能描述fill3 三维多边形填充plot3 三维线或点型图绘制mesh 三维网格图形绘制surf 三维表面图形绘制附录13.3三维颜色控制函数名功能描述函数名功能描述brighten 图形亮度调整hidden 网格图的网格线开关设置caxis 坐标轴伪彩色设置shading 设置渲染模式colormap 调色板设置附录13.4三维光照模型函数名功能描述函数名功能描述diffuse 图象漫射处理surf1 带光照的三维表面绘制lighting 光照模式设置surfnorm 曲面法线specular 设置镜面反射附录13.5标准调色板设置函数名功能描述函数名功能描述bone 带有蓝色调的灰色的调色板hot 以黑红黄白为基色的调色板cool 以天蓝粉色为基色的调色板hsv 色度饱和度亮度调色板copper 线性铜色调的调色板pink 粉色色调的调色板flag 以红白蓝黑为基色的调色板prism 光谱颜色表gray 线性灰度调色板附录13.6三维视点控制函数名功能描述函数名功能描述rotate3d 设置三维旋转开关viewmtx 求视转换矩阵view 设置视点附录13.7坐标轴控制函数名功能描述函数名功能描述axis 坐标轴标度设置hold 设置当前图形保护模式axes 坐标轴位置设置subplot 将图形窗口分成几个区域box 坐标轴盒状显示zoom 二维图形缩放grid 坐标网格线开关设置附录13.8图形注解函数名功能描述函数名功能描述colorbar 颜色条设置xlabel 给图形的x轴加文字说明gtext 在鼠标位置加文字说明ylabel 给图形的y轴加文字说明text 在图形上加文字说明zlabel 给图形的z轴加文字说明title 给图形加标题函数名功能描述函数名功能描述print 打印图形或将图形存盘orient 设置纸的方向orintopt 设置打印机为默认值附录14 特殊图形附录14.1特殊二维图形函数名功能描述函数名功能描述area 区域填充feather 羽状条形图绘制bar 条形图绘制fplot 给定函数绘制barh 水平条形图绘制hist 直方图绘制bar3 3维条形图绘制pareto pareto图绘制bar3h 3维水平条形图绘制pie 饼状图绘制comet 彗星状轨迹绘制stem 离散序列图形绘制errorbar 误差条形图绘制stairs 梯形图绘制附录14.2等高线及其他二维图形函数名功能描述函数名功能描述contour 等高线绘制pcolor 伪色绘制contourf 等高线填充绘制quiver 有向图(箭头)绘制contour3 三维等高线绘制voronoil voronoi图绘制clabel 等高线高程标志附录14.3特殊三维图形函数名功能描述函数名功能描述comet3 三维彗星状轨迹绘制slice 切片图meshc 带等高线的三维网格绘制surfc 带等高线的三维表面绘制meshz 带零平面的三维网格绘制trisurf 表面图形的三角绘制stem2 杆图绘制trimesh 网格图形的三角绘制quiver3 三维箭头(有向图)绘制waterfall 瀑布型图形的绘制附录14.4图象显示与文件I/O函数名功能描述函数名功能描述brighten 图形色调亮化image 图像显示colorbar 颜色条设置imfinfo 图形文件信息colormap 调色板设置imread 从文件读取图形contrast 灰度对比度设置imwrite 保存图像MATLAB:没她难办!我的兴趣小组:爱数学--数学及科学软件开发MY BLOG:平生惟有两行泪半为苍生半为君有关家国天下文常读无益身心道德事莫为作者:Guassfans专家分:4050会员信息发短消息所属BLOG 发表时间:2007-7-19 11:59:00 [回复] [引用] 3 楼附录14.5动画处理函数名功能描述函数名功能描述capture 屏幕抓取movie 播放动画帧getframe 获取动画帧附录14.6实体模型函数名功能描述函数名功能描述cylinder 圆柱体生成sphere 球体生成附录15 图形处理附录15.1图形窗口生成与控制函数名功能描述函数名功能描述clf 清除当前图形窗口gcf 获取当前图形的窗口句柄close 关闭图形窗口refresh 图形窗口刷新figure 生成图形窗口shg 显示图形窗口附录15.2坐标轴建立与控制函数名功能描述函数名功能描述axes 坐标轴标度设置gca 获得当前坐标轴句柄axis 坐标轴位置设置hold 设置当前图形保护模式box 坐标轴盒状显示ishold 返回hold的状态caxis 为彩色坐标轴刻度subplot 将图形窗口分为几个区域cla 清除当前坐标轴附录15.3处理图形对象函数名功能描述函数名功能描述axes 坐标轴生成surface 表面生成figure 图形窗口生成text 文本生成image 图像生成unicontrol 生成一个用户接口控制light 光源生成uimenu 菜单生成line 线生成DEMOK工作室淘宝小店回复引用报告使用道具TOP潜心文典发短消息加为好友潜心文典当前离线UID13801 帖子11 主题1 精华0 积分133 威望28 贡献1 充值币2 学校安徽大学学历阅读权限20 在线时间4 小时注册时间2010-1-6 最后登录2010-3-8注册会员帖子11 积分133 威望28 贡献1 充值币2 学校安徽大学学历注册时间2010-1-63#发表于2010-2-26 13:12 | 只看该作者附录15.4图形函数名功能描述函数名功能描述copyobj 图像对象拷贝gcbo 获得当前回调对象的句柄delete 对象删除gco 获得当前对象的句柄drawnow 消除未解决的图像对象事件get 获得对象属性findobj 查找对象reset 重新设置对象属性gebf 获得当前回调窗口的句柄set 设置对象属性附录16 GUI(图形用户接口)附录16.1GUI函数函数名功能描述函数名功能描述ginput 获取鼠标输入uiresume 继续执行selectmoveresize 对象的选择、移动、大小设置、拷贝uiwait 中断执行uicontrol 生成图形用户接口对象waitgorbutterpress 等待按钮输入uimenu 生成菜单对象waitfor 中断执行附录16.2GUI设计工具函数名功能描述函数名功能描述align 坐标轴与用户接口控制的对齐工具menuedit 菜单编辑器cbedit 回调函数编辑器propedit 属性编辑器guide GUI设计工具附录16.3对话框函数名功能描述函数名功能描述dialog 对话框生成printdlg 打印对话框axlimdig 坐标轴设限对话框questdlg 请求对话框errordlg 错误对话框uigetfile 标准的打开文件对话框helpdlg 帮助对话框uiputfile 标准的保存文件对话框inputdlg 输入对话框uisetcolor 颜色选择对话框listdlg 列表选择对话框uisetfont 字体选择对话框msgdlg 消息对话框waitbar 等待条显示pagedlg 页位置对话框warndlg 警告对话框附录16.4菜单函数名功能描述函数名功能描述makemenu 生成菜单结构umtoggle 菜单对象选中状态切换menubar 设置菜单条属性wimenu 生成window菜单项的子菜单附录16.5组按钮函数名功能描述函数名功能描述btndown 组按钮中的按钮按下btnstate 查询按钮中的按钮状态btngroup 组按钮生成btnup 组按钮中的按钮弹起btnpress 组按钮中的按钮按下管理附录16.6自定义窗口属性函数名功能描述函数名功能描述clruprop 清除用户自定义属性setuprop 设置用户自定义属性getuprop 获取用户自定义属性附录16.7其他应用函数名功能描述函数名功能描述allchild 获取所有子对象popupstr 获取弹出式菜单选中项的字符串edtext 坐标轴文本对象编辑remapfig 改变窗口中对象的位置findall 查找所有对象setptr 设置窗口指针getptr 获得窗口指针setstatus 设置窗口中文本传状态getstatus 获取窗口中文本状态附录17 声音处理函数名功能描述函数名功能描述soond 将向量转换成声音wavread 读。
MATLAB简单程序大全MATLAB简单程序大全求特征值特征向量A=[2 3 4;1 5 9;8 5 2]det(A)A'rank(A)inv(A)rref(A)eig(A)%求特征值和特征向量卫星运行问题h=200,H=51000,R=6378;a=(h+H+2*R)/2;c=(H-h)/2;b=(a^2-c^2)^(1/2);e=c/a;f=sqrt(1-exp(2).*cos(t)^2);l=int(f,t,0,pi/2)L=4*a.*l动态玫瑰线n=3;N=10000;theta=2*pi*(0:N)/N;r=cos(n*theta);x=r.*cos(theta);y=r.*sin(theta);comet(x,y)二重积分syms x yf=x^2*sin(y);int(int(f,x,0,1),y,0,pi)ezmesh(f,[0,1,0,pi])函数画图syms x;f=exp(-0.2*x)*sin(0.5*x); ezplot(f,[0,8*pi])玫瑰线theta=0:0.01:2*pi;r=cos(3*theta);polar(theta,r,'r')求x^2+y^2=1和x^2+z^2=1所围成的体积syms x y z Rr=1;Z=sqrt(1-x^2);y0=Z;V=8*int(int(Z,y,0,y0),x,0,1)求导数及图像f='1/(5+4*cos(x))';subplot(1,2,1);ezplot(f)f1=diff(f)subplot(1,2,2);ezplot(f1)绕x轴旋转t=(0:20)*pi/10;r=exp(-.2*t).*sin(.5*t);theta=t;x=t'*ones(size(t));y=r'*cos(theta);z=r'*sin(theta);mesh(x,y,z)colormap([0 0 0])某年是否闰年year=input('input year:=');n1=year/4;n2=year/100;n3=year/400;if n1==fix(n1)&n2~=fix(n2) disp('是闰年')elseif n1==fix(n1)&n3==fix(n3) disp('是闰年')elsedisp('不是闰年')End玫瑰线的绘制theta=0:0.001:2*pi;rho=2*cos(3*theta);figure(1);polar(theta,rho)x=rho.*cos(theta);y=rho.*sin(theta);figure(2);comet(x,y)相遇问题function k=moto(A,B)if nargin==0,A=0;B=100;end va=10;vb=8;vc=60;f=1;k=0;while(B-A)>0.2if f==1tk=(B-A)/(vb+vc);elsetk=(B-A)/(vc+va);endA=A+va*tk;B=B-vb*tk;f=-f;k=k+1;End数学实验syms x; x=1:100;f(x)=exp(-0.2*x).*sin(0.5*x); syms x; x=1:100;f(x)=exp(-0.2*x).*sin(0.5*x); plot(x,f(x))syms x; x=0:0.1:2*pi;f(x)=exp(-0.2*x)*sin(0.5*x); plot(x,f(x))syms x; x=0:0.1:2*pi;f(x)=exp(-0.2*x).*sin(0.5*x); plot(x,f(x))syms x; x=0:0.1:2*pi;f(x)=exp(-0.2*x).*sin(0.5*x); zplot(x,f(x))clcf=sym('sin(x)/x');limit(f)f1=sym('(1+a/x)^x')limit(f1)f1=sym('(1+a/x)^x'),x=inf; limit(f1)clcf1=sym('(1+1/x)^x');limit(f1,'inf')f1=sym('(1+1/x)^x');limit(f1,'inf')clcf1=sym('(1+1/x)^x');limit(f1,'x',inf)Clc相遇问题A=0;B=100;va=10;vb=8;vc=60;f=1;k=0;plot(A,0,'ro',B,0,'go'),hold on while(B-A)>0.2if f==1tk=(B-A)/(vb+vc);elsetk=(B-A)/(vc+va);endA=A+va*tk;B=B-vb*tk;plot(A,0,'R.',B,0,'g.'),pause(1)f=-f;k=k+1;endk,tk,A,B数学实验f=[0 9 13.5;0.1 0 0;0 0.2 0] x=[100;100;100]y=xfor n=1:3x=f*xy=[y,x]endyfigure(1),bar(y(1,:))figure(2),bar(y(2,:))figure(3),bar(y(3,:)) [p,d]=eig(f)a=p(:,1)b=a/sum(a)x1=b*300y1=x1for n=1:3x1=f*x1y1=[y1,x1]endy1figure(4),bar(y1(1,:))figure(5),bar(y1(2,:))figure(6),bar(y1(3,:))杨辉三角function Y=yang(n)if nargin==0,n=3;endY=eye(n);Y(:,1)=ones(n,1);for k=3:nY(k,2:k-1)=Y(k-1,1:k-2)+Y(k-1,2:k-1); End实例2 寻找水仙花数一、实验内容数153有一个特殊的性质,即153=1^3+5^3+3^3,那么有没有其他这样的数呢?我们怎样利用MATLAB程序设计快速寻求这些水仙花数呢?二、实验分析把任一数各位数字的立方和求出,再求所得的各位数字的立方和,依次进行下去,总可以得到一个水仙花数.如把76按这样的运算进行下去:333333333333+=++=++=+++= 76559,559979,9791801,1801514,333333333333514190,190730,730370,370370++=++=++=++=结果得到一个水仙花数370。
MATLAB小代码
题目部分
第一题:(函数文件)怎样快速计算2^b(mod 7)?不妨,b=1234567;
第二题:9⨯9的网格中,随机分布了10颗地雷,怎样描述此时的扫雷局面?
第三题:(函数文件)输入两个正整数a,b,求出x,y,使得a*x+b*y等于a与b的最大公x+最小,不妨a=24,b=32;
约数,并且使得y
第四题:(函数文件)自行设计一个函数来求方阵的行列式值,并将你的结果与det函数进行比较。
第五题:平面内有一个三角形ABC,怎样判断任一点D在三角形内,在三角形外或者在三角形上?
第六题:(函数文件)怎样快速计算a^b(mod n)?不妨,a=123,b=456789,n=1234567; 代码部分
(1)
******************代码部分**************
function y=fun1(b)
i=mod(b,3);
switch i
case 1
y=2;
case 2
y=4;
case 0
y=1;
end
end
****************运行结果*******************
(2)
********************代码部分****************
function y= fun2( a,b )
A=zeros(9);
s=randi([1,81],1,10);
for i=1:10
A(s(i))=9;%9表示地雷
end
A
t=zeros(1,81);
for i=1:10
t(s(i))=1;
end
for i=1:81
if t(i)~=0
if (i-1)>=1&&mod((i-1),9)~=1
A(i-1)=A(i-1)+1;
end
if (i+1)<=81&&mod((i+1),9)~=1
A(i+1)=A(i+1)+1;
end
if (i+9)<=81&&mod((i+9),9)~=1
A(i+9)=A(i+9)+1;
end
if (i-9)>=1&&mod((i-9),9)~=1
A(i-9)=A(i-9)+1;
end
if(i-10)>=1&&mod((i-10),9)~=1
A(i-10)=A(i-10)+1;
end
if(i+8)<=81&&mod((i+8),9)~=1
A(i+8)=A(i+8)+1;
end
if(i-8)>=1&&mod((i-8),9)~=1
A(i-8)=A(i-8)+1;
end
if(i+10)<=81&&mod((i+10),9)~=1 A(i+10)=A(i+10)+1;
end
end
end
for i=1:81
if A(i)>9
A(i)=9;
end
end
A
end
****************运行结果***********************
(3)
****************代码部分************************
****************运行结果***********************
(4)
****************代码部分*********************** function det= fun4(A)
n=rank(A);
count=0;
for p=1:n-1
[Y,j]=max(abs(A(p:n,p)));%找主元
%交换主元行和第p行位置
C=A(p,:);
A(p,:)=A(j+p-1,:);
A(j+p-1,:)=C;
count=count+1;
%消去第P行向下
for k=p+1:n
m=A(k,p)/A(p,p);
A(k,p:n)=A(k,p:n)-m*A(p,p:n);
end
end
%计算上三角主对角元素乘积
det=1;
for i=1:n
det=det*A(i,i);
end
if mod(count,2)==1
det=-det;
end
end
****************运行结果***********************
(5)
****************代码部分*********************** function yy = triangle( x,y )
%A的每行表示三角形三个顶点的坐标
A=[2 4;
3 2;
5 3;
];
theta1=angle([A(1,:),A(2,:),x,y]);
theta2=angle([A(2,:),A(3,:),x,y]);
theta3=angle([A(1,:),A(3,:),x,y]);
if theta1+theta2+theta3<2*pi
disp('在三角形外 ')
else if theta1==pi||theta2==pi||theta3==pi
disp('在三角形边上')
else
disp('在三角形内')
end
end
end
end
function y = angle(A)
d1=distance([A(1:2) A(5:6)]);
d2=distance([A(3:4) A(5:6)]);
d3=distance([A(1:2),A(3:4)]);
m=d1^2+d2^2-d3^2;
n=2*d1*d2;
y=acos(m/n);%余弦定理
end
function res = distance(B)
x1=B(1);
y1=B(2);
x2=B(3);
y2=B(4);
res = sqrt((x1-x2)^2+(y1-y2)^2);
end
****************运行结果***********************
(6)
****************代码部分*************************
//(函数文件)怎样快速计算a^b(mod n)?不妨,a=123,b=456789,n=1234567; #include<iostream>
using namespace std;
int a=107;
int n=101;
int mod(int x)
{
if(x==0)
return 1;
if(x==1)
return (a)%n;
if(x%2==0)
return (mod(x/2)*mod(x/2))%n;
if(x%2==1)
return (mod(x/2)*mod(x/2)*a)%n;
}a
int main()
{
int b=100;
cout<<mod(b)<<endl;
return 0;
}
****************运行结果*************************。