MATLAB 二维三维画图 仿真 数组运算

MATLAB  二维三维画图  仿真 数组运算
MATLAB  二维三维画图  仿真 数组运算

1.数学

(1)数组运算;

x=[1 2 3 4];

y=[3 4 5 6];

z=x+y %数组x与数组y相加得到数组z

z =

4 6 8 10

z=x-y %数组x与数组y相减得到数组z

z =

-2 -2 -2 -2

z=x.*y %数组x与数组y相乘得到数组z

z =

3 8 15 24

z=x./y %数组x与数组y相除得到数组z

z =

0.3333 0.5000 0.6000 0.6667 (2)矩阵及其运算

a=[1 2 3 4;2 3 4 5;3 4 5 6]

a=

1 2 3 4

2 3 4 5

3 4 5 6

a1=a' %矩阵的转置

a1 =

1 2 3

2 3 4

3 4 5

4 5 6

b=[1 2 3;4 5 6;7 8 9];

c=[12 34 44;2 3 5;6 7 8];

d=b+c %矩阵的相加

d =

13 36 47

6 8 11

13 15 17

e=b-c %矩阵的相减

e =

-11 -32 -41

2 2 1

1 1 1

A=b*c %矩阵的相乘

A =

34 61 78

94 193 249

154 325 420

A=c*b %矩阵的相乘

A =

456 546 636

49 59 69

90 111 132

A=[1 12 7;3 8 5;4 3 6];

B=[4;9;13];

C=A\B %矩阵的左除

C =

2.6442

-0.1731

0.4904

B=flipud(A) %矩阵B由矩阵A上下翻转得到

B =

4 3 6

3 8 5

1 1

2 7

C=A/B %矩阵的右除

C =

0 0 1

0 1 0

1 0 0

D=A^2 %矩阵A的二次方

D =

65 129 109

47 115 91

37 90 79

(3)函数及其运算

x=0:pi/100:2*pi;

y=sin(x);

plot(x,y) %正弦函数

(4)数值分析

%数值积分

d=pi/100;

t=0:d:3*pi;

nt=length(t);

y=exp(-0.5*t).*sin(t+pi/6);

z=trapz(y)*d

z =

0.9008

sc=cumsum(y)*d;

scf=sc(nt)

scf =

0.9086

(5)数据分析

统计计算

randn('seed',0);

a=randn(100,5);

a_max=max(max(a))

a_max =

3.2069

a_end=median(a)

a_end =

0.1489 0.0301 0.0443 -0.0189 0.1375 a_mean=mean(a)

a_mean =

0.0727 0.0264 0.0351 0.0424 0.0752 a_prod=prod(a)

a_prod =

1.0e-020 *

-0.0000 0.1268 -0.0000 -0.0000 0.0007 2.图形技术

(1)平面绘图

x=0:0.4:4*pi;

y1=exp(-0.1*x).*sin(x);

y2=exp(-0.1*x).*sin(x+1);

plot(x,y1,x,y2) %绘制两条曲线

x=(0:pi/45:2*pi)';

k=0.3:0.1:1;

y=cos(x)*k;

plot(y) %绘制多条不同色彩的曲线

x=0:0.01:20;

y1=200*exp(-0.5*x).*sin(x);

y2=0.8*exp(-0.5*x).*sin(10*x);

plotyy(x,y1,x,y2); %绘制双纵坐标图

(2)立体绘图(三维)

[X,Y]=meshgrid(-10:0.5:10);

B=sqrt(X.^2+Y.^2)+eps;

Z=cos(B)./B;

mesh(X,Y,Z); %绘制三维曲面网线

[X,Y]=meshgrid(-2:0.2:2);

Z=X.*exp(-X.^2-Y.^2);

plot3(X,Y,Z); %绘制多条三维曲线

[X,Y]=meshgrid(-10:0.5:10);

B=sqrt(X.^2+Y.^2)+eps;

Z=sin(B)./B;

surf(X,Y,Z); %绘制三维曲面

(3)绘制子图

x=pi*(0:1000)/1000;

y1=sin(x);

y2=sin(10*x);

y12=y1.*y2;

subplot(221);plot(x,y1);axis([0,pi,-1,1]); %分割并绘制第一幅子图subplot(222);plot(x,y2);axis([0,pi,-1,1]); %分割并绘制第二幅子图subplot('position',[0.2,0.05,0.6,0.45]); %分割第三幅子图的位置plot(x,y12);axis([0,pi,-1,1]); %绘制第三幅子图

(4)图形标志

x=0:2*pi/90:2*pi;

y1=sin(2*x);

y2=exp(-15*x).*sin(2*x);

plot(x,y1,'r:',x,y2,'m*');

legend('第一条','第二条')

3.程序设计

(1)控制流

1)while语句

num=0;EPS=1;

while(1+EPS)>1

EPS=EPS/2;

num=num+1;

end

num

EPS=2*EPS

num =

53

EPS =

2.2204e-016

2)if语句

n=input('n?');

if rem(n,2)==0

disp('n is even');

end

输入6,得到结果得到n is even

3)for语句

for i=1:4

for j=1:3

a(i,j)=i*j;

end

end

a

a =

1 2 3

2 4 6

3 6 9

4 8 12

4)switch语句

var=input('var=?');

switch var

case 1

disp('var=1');

case {2,3,4}

disp('var=2 or 3 or 4');

case 5

disp('var=5');

otherwise

disp('other value');

end

(2)M文件

1)命令文件

prime %{新建一个prim.m的文件,程序如下

%clear;

%close all

%N=input('N=\n');

%x=2:N;

%for u=2:sqrt(N)

%n=find(rem(x,u)==0 & x~=u);

%x(n)=[];

%end;

%x }

function[out1,out2]=humps(x)

if nargin==0

x=0:0.05:1;

end

y=1./((x-0.3).^2+0.1)+1./((x-0.9).^2+0.4)-6;

if nargout==2

out1=x;

out2=y;

else

out1=y;

end

%运行后输入N数值,如输入35得到结果是x=2 3 5 7 11 13 17 19 23 29 31 2)函数文件

fun1

%function z=fun1(x,y)

%global abpha beta

%m=length(x);

%n=length(y);

%x1=x'*ones(1,n);

%y1=(y'*ones(1,m))';

%z=alpha*(x1-1).^2+beta*(y1+1).^2;

fun11 %global alpha beta

%u=[0:0.02:2];

%v=[-2:0.02:0];

%figure(1)

%subplot(211);

%alpha=1;beta=1;

%w=fun1(u,v);

%mesh(w);

%title(['\alpha=',num2str(alpha),'and\beta=',/num2str(beta)]);

%subplot(212);

%alpha=2;beta=2;

%w=fun1(u,v);

%mesh(w);

%title(['\alpha=',num2str(alpha),'and\beta=',/num2str(beta)]);

function y = mean(x,dim)

%MEAN Average or mean value.

% For vectors, MEAN(X) is the mean value of the elements in X. For % matrices, MEAN(X) is a row vector containing the mean value of

% each column. For N-D arrays, MEAN(X) is the mean value of the

% elements along the first non-singleton dimension of X.

%

% MEAN(X,DIM) takes the mean along the dimension DIM of X.

%

% Example: If X = [0 1 2

% 3 4 5]

%

% then mean(X,1) is [1.5 2.5 3.5] and mean(X,2) is [1

% 4]

%

% Class support for input X:

% float: double, single

%

% See also MEDIAN, STD, MIN, MAX, VAR, COV, MODE.

% Copyright 1984-2005 The MathWorks, Inc.

% $Revision: 5.17.4.3 $ $Date: 2005/05/31 16:30:46 $

if nargin==1,

% Determine which dimension SUM will use

dim = min(find(size(x)~=1));

if isempty(dim), dim = 1; end

y = sum(x)/size(x,dim);

else

y = sum(x,dim)/size(x,dim);

end

4.S imulink

1).用Simulink实现两个正弦信号的乘积,即计算想x(t)=sin(2t)*sin(5t),

并显示输出波形

AT

2).用Simulink输出传递函数的波形

simulink1

simulink2

simulink3

num0=[40]

p1=[1,0]

p2=[0.25,1]

p3=[0.0625,1]

p=conv(p1,p2)

den0=conv(p,p3)

rlocus(num0,den0)

k=40/(0.25*0.0625);

[pj,k]=rlocus(num0,den0,k)

figure(2)

bode(num0,den0)

grid

[m,fai,wg,wc]=margin(num0,den0)

h=20*log10(m)

num0 =

40

p1 =

1 0

p2 =

0.2500 1.0000

p3 =

0.0625 1.0000

p =

0.2500 1.0000 0

den0 =

0.0156 0.3125 1.0000 0

pj =

1.0e+002 *

-1.9393 0.8696 + 1.6196i 0.8696 - 1.6196i k =

2560

Warning: The closed-loop system is unstable.

> In warning at 26

In lti.margin at 66

In margin at 98

m =

0.5000

fai =

-15.0110

wg =

8.0000

wc =

11.1190

h =

-6.0206

num0=[40*4 40]

p1=[1,0]

p2=[80,1]

p3=[0.25,1]

p4=[0.0625,1]

p12=conv(p1,p2)

p123=conv(p12,p3)

den0=conv(p123,p4)

figure(5)

rlocus(num0,den0)

k=40*4/(80*0.25*0.0625);

[pj,k]=rlocus(num0,den0,k) figure(6)

bode(num0,den0)

grid

[m,fai,wg,wc]=margin(num0,den0) h=20*log10(m)

num0 =

160 40

p1 =

1 0

p2 =

80 1

p3 =

0.2500 1.0000

p4 =

0.0625 1.0000

p12 =

80 1 0

p123 =

MATLAB中的矩阵与向量运算

4.1 数组运算和矩阵运算 从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操作简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表 4.1.1 数组运算和矩阵运算指令形式和实质内涵 数组运算矩阵运算 指令含义指令含义 A.'非共轭转置A'共轭转置 A=s把标量s赋给数组A的每个元素 s+B把标量s分别与数组B的每个元素相加s-B, B-s标量s分别与数组B的元素之差 s.*A标量s分别与数组A的元素之积s*A标量s分别与矩阵A的元素之积 s./B, B.\s标量s分别被数组B的元素除s*inv(B)矩阵B的逆乘标量s A.^n数组A的每个元素的n次方A^n A为方阵时,矩阵A的n次方 A+B数组对应元素的相加A+B矩阵相加 A-B数组对应元素的相减A-B矩阵相减 A.*B数组对应元素的相乘A*B内维相同矩阵的乘积 A./B A的元素被B的对应元素除A/B A右除B B.\A一定与上相同B\A A左除B(一般与右除不同) exp(A)以e为底,分别以A的元素为指数,求幂expm(A) A的矩阵指数函数 log(A) 对A的各元素求对数logm(A) A的矩阵对数函数 sqrt(A) 对A的积各元素求平方根sqrtm(A) A的矩阵平方函数 从上面可以看到,数组运算的运算如:乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,参与运算的数组必须同维,运算所得的结果数组也是总与原数组同维. 4.2 数组的基本运算 在MATLAB中,数组运算是针对多个数执行同样的计算而运用的.MATLAB以一种非常直观的方式来处理数组. 4.2.1 点转置和共轭转置 . ' ——点转置.非共轭转置,相当于conj(A'). >> a=1:5; >> b=a. ' b = 1 2 3 4 5 >> c=b. ' c = 1 2 3 4 5 这表明对行向量的两次转置运算便得到原来的行向量. ' ——共轭转置.对向量进行转置运算并对每个元素取其共轭.如: >> d=a+i*a

2011全国大学生数模竞赛A题三维立体绘图MATLAB代码

2011全国大学生数模竞赛A题 三维立体绘图MATLAB代码及图像 下载两个数据文件保存到MATLAB工作目录中,同时将下面的程序拷贝到一个M文件里面运行即可。 MATLAB代码和数据文件请到这里下载:https://www.360docs.net/doc/b113893606.html,/thread-19793-1-1.html A题城市表层土壤重金属污染分析 随着城市经济的快速发展和城市人口的不断增加,人类活动对城市环境质量的影响日显突出。对城市土壤地质环境异常的查证,以及如何应用查证获得的海量数据资料开展城市环境质量评价,研究人类活动影响下城市地质环境的演变模式,日益成为人们关注的焦点。 按照功能划分,城区一般可分为生活区、工业区、山区、主干道路区及公园绿地区等,分别记为1类区、2类区、……、5类区,不同的区域环境受人类活动影响的程度不同。 现对某城市城区土壤地质环境进行调查。为此,将所考察的城区划分为间距1公里左右的网格子区域,按照每平方公里1个采样点对表层土(0~10 厘米深度)进行取样、编号,并用GPS记录采样点的位置。应用专门仪器测试分析,获得了每个样本所含的多种化学元素的浓度数据。另一方面,按照2公里的间距在那些远离人群及工业活动的自然区取样,将其作为该城区表层土壤中元素的背景值。 附件1列出了采样点的位置、海拔高度及其所属功能区等信息,附件2列出了8种主要重金属元素在采样点处的浓度,附件3列出了8种主要重金属元素的背景值。 现要求你们通过数学建模来完成以下任务: (1) 给出8种主要重金属元素在该城区的空间分布,并分析该城区内不同区域重金属的污染程度。 (2) 通过数据分析,说明重金属污染的主要原因。 (3) 分析重金属污染物的传播特征,由此建立模型,确定污染源的位置。 (4) 分析你所建立模型的优缺点,为更好地研究城市地质环境的演变模式,还应收集什么信息?有了这些信息,如何建立模型解决问题?

matlab三维二维离散曲面画图教程

傅里叶变换 img=imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %img=double(img); f=fft2(img); %傅里叶变换 f=fftshift(f); %使图像对称 r=real(f); %图像频域实部 i=imag(f); %图像频域虚部 margin=log(abs(f)); %图像幅度谱,加log便于显示 phase=log(angle(f)*180/pi); %图像相位谱 l=log(f); subplot(2,2,1),imshow(img),title('源图像'); subplot(2,2,2),imshow(l,[]),title('图像频谱'); subplot(2,2,3),imshow(margin,[]),title('图像幅度谱'); subplot(2,2,4),imshow(phase,[]),title('图像相位谱'); https://www.360docs.net/doc/b113893606.html,/s/blog_1667198560102wmzu.html 傅里叶变换 I = imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %读入数字图像 I = rgb2gray(I);%将图像进行灰度处理 J = fft2(I);%将图像实行傅里叶变换 figure,imshow(I);%这里能得到频谱图 J = fftshift(J); figure,imshow(log(abs(J)),[]); %将频谱平移 J(abs(J)<5)=0;%不必要的过滤掉 figure,imshow(log(abs(J)+eps),[]); J = ifftshift(J);K = ifft2(J);figure,imshow(K,[0 255]);%傅里叶逆变换 自己所写的代码 I = imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %读入数字图像 J = fft2(I); %将图像实行傅里叶变换figure,imshow(I); %这里能得到频谱图 J = fftshift(J); figure,imshow(log(abs(J)),[]); %将频谱平移 J(abs(J)<5)=0; %不必要的过滤掉figure,imshow(log(abs(J)+eps),[]); J = ifftshift(J);K = ifft2(J); ss=real(ifft2(J));sss=uint8(ss);subplot(1,2,2); imshow(sss) figure,imshow(K,[0 255]); %傅里叶逆变换

matlab矩阵运算和数组运算

matlab矩阵运算和数组运算 作者:佚名教程来源:网络点击数:1368 更新时间:2010-5-3 矩阵运算和数组运算是Matlab的数值运算中的两大类运算。矩阵运算是按矩阵运算法 则进行的运算;数组运算无论是何种运算操作都是对元素逐个进行。 矩阵运算和数组运算指令对照汇总 矩阵运算指令指令含义数组运算指令指令含义 A' 矩阵转置 A.+B 对应元素相加 A+B 矩阵相加 A.-B 对应元素相减 A-B 矩阵相减 A.*B 同维数组对应元素相乘 s+B 标量加矩阵 s.*A A的每个元素乘s s-B,B-s 标量矩阵相减 A./B A的元素被B的对应元素除 A*B 矩阵相乘 B.\A 同上 A/B A右除B s./B, B.\s s 分别被B的元素除 B\A A左除B A.^n A的每个元素自乘n 次 inv(A) 矩阵求逆 log(A) 对A的每个元素求对数 A^n 矩阵的n次幂 sqrt(A) 对A的每个元素求平方根 f(A) 求A的各个元素的函数值 例: a=[1 2 3; 4 5 6; 7 8 9];b=[1 2 3; 3 2 1;1 4 5]; c=[1 1 1;2 3 1;1 0 2]; d=a*c^2+b d = 32 31 36 82 79 82 128 129 134 3.4 矩阵函数和数组函数

3.4.1 基本数组函数 数组函数是对各个元素的函数设计的。 f(.)基本函数表 函数名称功能函数名称功能 sin 正弦 acosh 反双曲余弦 cos 余弦 atanh 反双曲正切 tan 正切 acoth 反双曲余切 cot 余切 asech 反双曲正割 sec 正割 acsch 反双曲余割 csc 余割 fix 朝零方向取整 asin 反正弦 ceil 朝正无穷大方向取整 acos 反余弦 floor 朝负无穷大方向取整 atan 反正切 round 四舍五入到整数 atan2 四象反正切 rem 除后取余数 acot 反余切 sign 符号函数 asec 反正割 abs 绝对值 acsc 反余割 angle 复数相角 sinh 双曲正弦 imag 复数虚部 cosh 双曲余弦 real 复数实部 tanh 双曲正切 conj 复数共轭 coth 双曲余切 log10 常用对数 sech 双曲正割 log 自然对数 csch 双曲余割 exp 指数 asinh 反双曲正弦 aqrt 平方根 f(.)特殊函数表 函数名称功能函数名称功能 bessel 第一、第二类Bessel函数 erf 误差函数

实验五MATLAB的基本绘图方法

实验三MATLAB的基本绘图方法 一、实验目的 1.二维平面图形的绘制 2.三维立体图形的绘制 3.隐函数作图 二、实验地点:A404 三、实验日期: 四、实验内容 (一)二维平面图形的绘制 1、Plot的使用方法介绍 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当x 为m×n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,…元素为纵坐标值绘制多条曲线。 例1:画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 注:在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MA TLAB 软件专门提供了这方面的参数选项,我们只要在每个坐标后加上相关字符串,就可实现它们的功能。具体参见教材。 2、图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 图形修饰函数表如下: 函数含义 grid on (/off) 给当前图形标记添加(取消)网络 xlable(‘string’) 标记横坐标 ylabel(‘string’) 标记纵坐标 title(‘string’) 给图形添加标题 text(x,y,’string’) 在图形的任意位置增加说明性文本信息 gtext(‘string’) 利用鼠标添加说明性文本信息 axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值 例2、给例1的图形中加入网络和标记。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2)

Matlab常用函数数组及矩阵的基本运算

实验一 Matlab 常用函数、数组及矩阵的基本运算 一、 实验目的 1. 了解Matlab7.0软件工作界面结构和基本操作; 2. 掌握矩阵的表示方法及Matlab 常用函数; 3. 掌握数组及矩阵的基本运算. 二、 实验内容 1. 了解命令窗口(command widow)和变量空间(workspace)的作用,掌握清 除命令窗口(clc )和变量空间(clear)的方法.掌握查询函数(help)的方法. 2. 掌握保存和加载变量的方法. 加载变量:load 变量名. 3. 掌握掌握矩阵的表示方法: 给a,b,c 赋如下数据: ]6,46,23,4,2,6,3,8,0,1[,356838241248 7,278744125431-=??????????--=??????????=c b a 4. 求a+b,a*b,a.*b,a/b,a./b,a^2,a.^2的结果. 5. 将str1=electronic; str2 = information; str3 = engineering; 三个字符串连接 在一起成str = electronic information engineering. 6. 求矩阵a 的逆矩阵a -1,行列式计算。 (inv(a),det(a)) 三、 实验要求 1.上机操作,熟练掌握清除命令窗口和变量空间的方法、查询变量的方法、加载变量的方法。 2.第2道题请写出步骤。 3.对实验内容中第3-6项,写出指令,上机运行. 记录运行结果(数据)。 4.写出实验报告。 四、 实验结果 2. 用save 函数,可以将工作空间的变量保存成txt 文件或mat 文件等. 比如: save peng.mat p j 就是将工作空间中的p 和j 变量保存在peng.mat 中. 用load 函数,可以将数据读入到matlab 的工作空间中. 比如:load peng.mat 就是将peng.mat 中的所有变量读入matlab 工作空间中。

matble课程论文(MATLAB在三维作图中的应用)

《MATLAB》课程论文 MATLAB在三维作图中的应用 姓名: 学号: 专业: 班级: 指导老师: 学院: 完成日期:

MATLAB在三维作图中的应用 [摘要]MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,方便高效,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件。其实MATLAB的高层绘图函数都是利用低层绘图函数建立起来的。所以MATLAB的计算准确、效率高、使用快捷等优点常被广泛应用于科学和工程领域. [关键字]MATLAB语言三维图形图像处理绘制 一,问题的提出 MATLAB语言是当前国际学科界应用很广泛的一种软件,强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,利用它强大的图像处理来绘制三维图形既简单而且也很方便。在绘制三维图形的过程中也用到了MATLAB语言的其他功能,绘制三维图形时用到了它提供的一些函数,利用这些函数可以方便的生成一些特殊矩阵,因此可生成一个坐标平面。MATLAB语言强大的功能也在二维三维绘图中的得到了很广泛的应用,利用它所提供的精细的图像处理功能,如MATLAB还提 供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件,还可以对所绘制的三维图形作一个修饰的处理。MATLAB语言具有强大的以图形化显示矩阵和数组的能力,同时它给这些图形增加注释并且可以对图形进行标注和打印。MATLAB的图形技术包括三维的可视化、图形处理、动画等高层次的专业图形的高级绘图,例如图形的光照处理、色度处理以及四维数据的表现等。那么,如何把它强大的功能应用于实际应用中,下面我们将用实例说明MATBLE在三维作图中的应用。 二,MATLAB的主要功能及特点 MATLAB近几年广泛用于图像处理和识别, 使用MATLAB设计模式识别应用软件将使设

matlab数组运算

Matlab中数组元素引用有三种方法: 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组 A= 8 1 6 3 5 7 4 9 2 Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页 对应个元素的索引和下标分别为 Element Index Subscripts 8 1 (1,1) 3 2 (2,1) 4 3 (3,1) 1 4 (1,2) 5 5 (2,2) 9 6 (3,2) 6 7 (1,3) 7 8 (2,3) 2 9 (3,3) 从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为没有个元素分配了一个唯一识别的ID(即index) 1.下标法引用 A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end” 大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如 A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素 A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列 A(1,end-1)表示引用第1行倒数第2个元素

A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素 >>A=magic(3) A = 8 1 6 3 5 7 4 9 2 >>A(2:3,3:-1:1) ans = 7 5 3 2 9 4 >>A(:,end) ans = 6 7 2 >>A(1,end-1) ans = 1 >>A([2 1 3 3],[1 1 2 2 1]) ans = 3 3 5 5 3 8 8 1 1 8 4 4 9 9 4 4 4 9 9 4 2.索引法引用(说白了索引就是存储顺序) A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组 下标和索引之间可以通过ind2sub和sub2ind函数相互转换,具体可以看帮助,很简单 [I,J] = ind2sub(siz,IND)

实验Matlab三维作图的绘制

实验9 三维绘图 一、实验目的 学会MATLAB软件中三维绘图的方法。 二、实验内容与要求 1.三维曲线图 格式一:plot3(X,Y,Z,S). 说明:当X,Y,Z均为同维向量时,则plot3描出点X(i),Y(i),Z(i)依次相连的空间曲线.若X,Y均为同维矩阵,X,Y,Z每一组相应列向量为坐标画出一条曲线,S为‘color﹣linestyle﹣marker’控制字符表1.6~表1.10. 【例1.79】绘制螺旋线. >>t=0:pi/60:10*pi; >>x=sin(t); >>y=cos(t); >>plot3(x,y,t,’*-b’) >>grid on 图形的结果如图1.16所示. 格式二:comet3(x,y,z). 说明:显示一个彗星通过数据x,y,z确定的三维曲线. 【例1.80】 >>t=-20*pi:pi/50:20*pi; >>comet3(sin(t),cos(t),t) 可见到彗星头(一个小圆圈)沿着数据指定的轨道前进的动画图象,彗星轨道为整个函数所画的螺旋线. 格式三:fill3(X,Y,Z,C) ℅填充由参数X,Y,Z确定的多边形,参数C指定颜色. 图1.16 例1.79图形结果图1.17 例1.81图形结果 【例1.81】

>>X=[2,1,2;9,7,1;6,7,0]; >>Y=[1,7,0;4,7,9;0,4,3]; >>Z=[1,8,6;7,9,6;1,6,1]; >>C=[1,0,0;0,1,0;0,0,1] >>fill3(X,Y,Z,C) >>grid on 图形的结果如图1.17所示. 问题1.30:图1.17中每个三角形按什么规律画出的?(用X,Y,Z的对应列元素值为坐标画三角形)每个三角形内填充的颜色又有何规律?(用C 第i列元素值对应的颜色,从第i个三角形对应顶点向中心过渡)若C=[1,5,10;1,5,10;1,5,10],结果如何? 2.三维网格图 格式:mesh(X,Y,Z,C) ℅画出颜色由C指定的三维网格图. meshc(X,Y,Z,C) ℅画出带有等高线的三维网格图. meshz(X,Y,Z,C) ℅画出带有底座的三维网格图. 说明:若X与Y均为向量,n=length(X),m=length(Y), Z必须满足[m,n]=size(Z),则空间中的点(X(j),Y(i),Z(i,j))为所画曲面网线的交点,X 对应于Z的列,Y对应于Z的行;若X,Y,Z均为同维矩阵,则空间中的点(X(i,j),Y(i,j),Z(i,j))为所画曲面的网线的交点;矩阵C指定网线的颜色,MATLAB对矩阵C中的数据进行线性处理,以便从当前色图中获得有用的颜色,若C缺省,网线颜色和曲面的高度Z相匹配. 在三维作图常用到命令meshgrid,其功能是生成二元函数z=f(x,y)中x-y平面上的矩形定义域中数据点矩阵X和Y. 格式:[X,Y]= meshgrid(x,y). 说明:输入向量x为x-y平面上x轴的值,向量y为x-y平面上y轴的值.输出矩阵X为x-y平面上数据点的横坐标值,输出矩阵Y为x-y平面上数据点的纵坐标值. 【例1.82】 >> x=1:4; >> y=1:5; >> [x,y]=meshgrid(x,y) x = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 y = 1 1 1 1

上机习题6_MATLAB7.0三维绘图

实验六 MATLAB7.0三维绘图实验目的: ①掌握绘制三维图能形的方法; ②掌握图形修饰处理方法; ③知道图像处理方法,了解动画制作方法。 实验要求:给出程序和实验结果。 实验容: 一、绘制三维曲线 sin() cos() sin()cos() x t y t z t t t = ? ? = ? ?= ? 二、绘制三维曲面图z=sin(x+sin(y))-x/10。 三、绘制z=x2+y2的三维网线图形; 四、绘制三维陀螺锥面; (仅供参考: t1=0:0.1:0.9; t2=1:0.1:2; r=[t1 -t2+2]; [x,y,z]=cylinder(r,30); surf(x,y,z); grid ) 五、在xy平面选择区域[-8,8]×[-8,8],利用mesh、meshc、meshz和surf绘 制z= 六、绘制光照处理后的球面,取三个不同的光照位置进行比较。(提示:可以利用函数sphere和 light) 七、利用peaks产生数据,绘制多峰曲面图。 八. 2 2y x xe z- - =,当x和y的取值围均为-2到2时,用建立子窗口的方法在同一 个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图。 九绘制peaks函数的表面图,用colormap函数改变预置的色图,观察色彩的分

布情况。 十、用sphere函数产生球表面坐标,绘制不透明网线图、透明网线图、表面图和带剪孔的表面图。 十一、将5.9题中的带剪孔的球形表面图的坐标改变为正方形,以使球面看起来是圆的而不是椭圆的,然后关闭坐标轴的显示。 实验结果: (1) (2)

(3) (4)

最新matlab各种三维绘图及实例

1 Matlab绘制三维图形 2 三维曲线 3 plot3函数与plot函数用法十分相似,其调用格式为: 4 plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 5 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。6 当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同7 维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 8 例绘制三维曲线。 9 程序如下: 10 t=0:pi/100:20*pi; 11 x=sin(t); 12 y=cos(t); 13 z=t.*sin(t).*cos(t); 14 plot3(x,y,z); 15 title('Line in 3-D Space'); 16 xlabel('X');ylabel('Y');zlabel('Z'); 17 18 三维曲面 19 1.产生三维数据 20 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格21 式为: 22 x=a:d1:b; y=c:d2:d;

23 [X,Y]=meshgrid(x,y); 24 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,25 矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 26 2.绘制三维曲面的函数 27 surf函数和mesh函数的调用格式为: 28 mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 29 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 30 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点31 上的高度矩阵,c用于指定在不同高度下的颜色范围。 32 例绘制三维曲面图z=sin(x+sin(y))-x/10。 33 程序如下: 34 [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐35 标 36 z=sin(x+sin(y))-x/10; 37 mesh(x,y,z); 38 axis([0 4*pi 0 4*pi -2.5 1]); 39 此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面40 函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z 41 轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 42 例在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。 43 程序如下: 44 [x,y]=meshgrid(-8:0.5:8); 45 z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);

Matlab二维数组与其应用

MATLAB画图入门篇--各种基本图形绘制的函数与实例【来自网络】 一.二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plot, semilogx, semilogy, loglog, polar, plotyy (1). 单矢量绘图(single vector plotting):plot(y),矢量y的元素与y元素下标之间在线性坐标下的关系曲线。 例1:单矢量绘图 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) 可以在图形中加标注和网格, 例2:给例1 的图形加网格和标注。 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) title('简单绘图举例'); xlabel('单元下标'); ylabel('给定的矢量'); grid (2). 双矢量绘图(Double vector plotting):如x和y是同样长度的矢量, plot(x,y)命令将绘制y元素对应于x元素的xy曲线图。 例:双矢量绘图。 x=0:0.05:4*pi; y=sin(x); plot(x,y) (3). 对数坐标绘图(ploting in logarithm coordinate):x轴对数semilogx, y轴对数semilogy, 双对数loglog, 例:绘制数组y的线性坐标图和三种对数坐标图。 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; subplot(2,2,1); plot(y); subplot(2,2,2); semilogx(y) subplot(2,2,3); semilogy(y); subplot(2,2,4); loglog(y) (4)极坐标绘图( Plotting in polar coordinate): polar(theta,rho) theta—角度,rho—半径 例:建立简单的极坐标图形。 t=0:.01:2*pi; polar(t,sin(2*t).*cos(2*t)) 2. 多重曲线绘图(Multiple curve plotting) (1)一组变量绘图(A group variable plotting) plot(x,y) (a) x为矢量,y为矩阵时plot(x,y)用不同的颜色绘制y矩阵中各行或列对应于x的曲线。例1: x=0:pi/50:2*pi; y(1,: )=sin(x); y(2,:) =0.6*sin(x); y(3, :)=0.3*sin(x); plot(x,y) (b) x为矩阵,y为矢量时绘图规则与(a)的类似,只是将x中的每一行或列对应于y进行绘图。。 例2: x(1,: )=0:pi/50:2*pi; x(2,: )=pi/4:pi/50:2*pi+pi/4; x(3,: )=pi/2:pi/50:2*pi+pi/2; y=sin(x(1,: )); plot(x,y) (c) x和y是同样大小的矩阵时, plot(x,y)绘制y矩阵中各列对应于x各列的图形。 例3: x(:,1 )=[0:pi/50:2*pi]'; x(:,2 )=[pi/4:pi/50:2*pi+pi/4]'; x(:,3 )=[pi/2:pi/50:2*pi+pi/2]'; y(:,1 )=sin(x(:,1 )); y(:,2 )=0.6*sin(x(:,1)); y(:,3 )=0.3*sin(x(:,1));

MATLAB三维绘图数据源分析及镂空研究_张玉叶

价值工程 0引言 一般而言,在标量空间,三维图形的表达难以实现,而MATLAB 具有有很好的三维数据可视化功能,尤其适用于矩阵运算。本文分析了在标量空间绘制三维图形时所需要的数据源是如何产生的,以及深入分析数据源的产生对于三维图形作“镂空”处理的意义。这个研究对于MATLAB 辅助实际应用研究具有重要的意义。 1三维绘图数据源产生分析 MATLAB 绘制三维图形的方法是用矩形网格来绘制曲面图形,meshgrid 指令就是在(x ,y )平面来产生矩形网格的,格式为:[X ,Y]=meshgrid (x ,y ) 其中, x ,y 为两个矢量,而X ,Y 为两个矩阵。而meshgrid 指令的作用就是将由矢量x 和y 定义的域转换成一个由两个数组X 和Y 组成的标量空间,以便于对形如z=f (x,y )的方程进行三维表达。输出数组X 的各值是由矢量x 的各值在y 轴上扩展成矢量y 的大小[1]。同样,输出数组Y 的各值是由矢量y 的各值在x 轴上扩展成矢量x 的大小。 >>x=-5:5;>>y=x ; >>[X,Y]=meshgrid (x,y ) X=-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345 Y=-5-5-5-5-5-5-5-5-5-5-5-4-4-4-4-4-4-4-4-4-4-4-3-3-3-3-3-3-3-3-3-3-3-2-2-2-2-2-2-2-2-2-2-2-1-1-1-1-1-1-1-1-1-1-1000000000001111111111122222222222 33333333333 4444444444455555555555>>Z=X.^2+Y.^2;>>surf (X ,Y ,Z ) 程序提供了一维行向量x=[-5-4-3-2-1012345],将x 在y 的方向上扩展成y 大小,形成数组X ,同理程序提供了一维列向量y=[-5-4-3-2-1012345]’,将y 在x 的方 向上扩展成x 的大小, 形成数组Y,在x-y 平面[2] ,数组X 和数组Y 形成了数据点阵如图1所示,然后根据关系式:z=x 2+y 2计算每个数据点阵在空间中的高度,用surf 指令做出表面图形,如图2所示。 2镂空处理 2.1平面域镂空分析明确了3D 图形的数据来源,就可以对立 体图形的各个部分进行镂空处理。 如果要在图2的基础上对空间曲面图进行镂空,效果如图3所示,操作指令如下: >>x=-5:5;>>y=x ; >>[X,Y]=meshgrid (x,y );>>X(8:9,8:9)=nan*X (8:9,8:9);>>Y(8:9,8:9)=nan*Y (8:9,8:9);>>surf (X,Y,Z ) 根据指令段,数组X 的第8行到第9行, 第8列到第9列数据乘以一个非数nan ,数组Y 的第8行到第9行,第8列到第9列数据也乘以一个非数nan ,数据点阵发生了变化,如图4所示:进行绘 图时,含有非数的数据部分被忽略[3] ,即不被绘制。从立体效果来看,对空间表面图进行了镂空操作。 2.2镂空疑点对镂空后的立体图形进行视角修饰,即在绘图之间加上指令〉〉view (2),让方位角az=0o ,仰角el=90o ,即对图形进行俯视操作,数据源的变化如图5所示,不难发现一个问题,根据数据源变化,我们绘图的时候应该忽略X (8:9,8:9),对应忽略Y (8:9,8:9)四个点,根据俯视图,镂空的区域似乎应该如图6所示,问题在哪里呢? —————————————————————— —基金项目:2009年咸阳师范学院教研基金项目(09XSYK205)。作者简介:张玉叶(1979-),女,陕西礼泉人,讲师,研究方向为电子设计自 动化。 MATLAB 三维绘图数据源分析及镂空研究 Data Sources Analysis of 3D Painting on MATLAB and Study of Piercing Technology 张玉叶Zhang Yuye (咸阳师范学院物理与电子工程学院,咸阳712000) (College of Physics and Electronics Engineering ,Xianyang Normal University ,Xianyang 712000,China ) 摘要:分析了MATLAB 三维图形绘制时数据源产生的机理,并对立体图形处理中的“镂空”技术,从平面域到圆域,逐渐深入探索如何3D 体 图形进行任意镂空的技巧,并从这个切入点深刻理解三维图形数据源与图形本身的对应关系。 结论对于3D 图形数据源分析及可视化具有实际应用意义。 Abstract:The paper analyzes the production mechanism of the data sources of 3D paintings.Just for piercing technology,from plane area to circle area,gradually it explores how to arbitrarily pierce a 3D graphic.From this breakthroug point,the corresponding relationship between the 3D graphic data sources and the graphic itself has been understood deeply.The conclusion has practical sense in data resources analysis of 3D graphics and visualizition. 关键词:MATLAB ;meshgrid ;数据源;镂空Key words:MATLAB ;meshgrid ;data source ;piercing 中图分类号:TP391.41 文献标识码:A 文章编号:1006-4311(2010) 34-0174-02 ·174·

matlab各种三维绘图及实例

Matlab绘制三维图形 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 例绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z); title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); 三维曲面 1.产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 2.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c 用于指定在不同高度下的颜色范围。 例绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐标 z=sin(x+sin(y))-x/10; mesh(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); 此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 例在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。 程序如下: [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2,2,1);

matlab上机习题6 MATLAB7.0三维绘图

实验六MATLAB7.0三维绘图实验目的: ①掌握绘制三维图能形的方法; ②掌握图形修饰处理方法; ③知道图像处理方法,了解动画制作方法。 实验要求:给出程序和实验结果。 实验内容: 一、绘制三维曲线 sin() cos() sin()cos() x t y t z t t t = ? ? = ? ?= ? 二、绘制三维曲面图z=sin(x+sin(y))-x/10。 三、绘制z=x2+y2的三维网线图形; 四、绘制三维陀螺锥面; (仅供参考: t1=0:0.1:0.9; t2=1:0.1:2; r=[t1 -t2+2]; [x,y,z]=cylinder(r,30); surf(x,y,z); grid ) 五、在xy平面内选择区域[-8,8]×[-8,8],利用mesh、meshc、meshz和surf绘 制/ z= 六、绘制光照处理后的球面,取三个不同的光照位置进行比较。(提示:可以利用函数sphere和light) 七、利用peaks产生数据,绘制多峰曲面图。 八. 2 2y x xe z- - =,当x和y的取值范围均为-2到2时,用建立子窗口的方法在同 一个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图。

九绘制peaks函数的表面图,用colormap函数改变预置的色图,观察色彩的分布情况。 十、用sphere函数产生球表面坐标,绘制不透明网线图、透明网线图、表面图和带剪孔的表面图。 十一、将5.9题中的带剪孔的球形表面图的坐标改变为正方形,以使球面看起来是圆的而不是椭圆的,然后关闭坐标轴的显示。 实验结果: 1 t=0:0.1:10; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z)

第一节 MATLAB 中的矩阵的输入

第一节 MATLAB 中的矩阵的输入 §1 直接输入 一、直接在工作窗中输入: A=[2, 4, 6, 8;1 3 5 7; 0 0 0 0;1,0,1,0] 其意义是定义了矩阵 ,0101000075318642?????? ? ??=A 二、如果矩阵中的元素是等步长的,可以用下面的方法 A=[1:0.2:2;1:6;2:2:12] A=[1:5]' “'”号在这里表示为转置,而 1:5 中间少了一个循环步长,此时将步长自动取为 1 。 §2 增删改 设已经定义 A=[1 2 3 4 5;10 8 6 4 2]; B=[0 1;1 0]; C=[1 2;2 4], 即已定义 A= B= C= 1 2 3 4 5 0 1 1 2 10 8 6 4 2 1 0 2 4 则命令:A=[[A(:,1:4);[C ,B]],[0 2 0 4]'] 将 A 定义成: A= 而 A(:,3)=[]; 将删除 A 的第三列 ,得 1 2 3 4 0 A= 1 2 4 0 10 8 6 4 2 10 8 4 2 1 2 0 1 0 1 2 1 0 2 4 1 0 4 2 4 0 4 §3 命令生成 使用 MATLAB 命令生成矩阵一般使用下面的命令 1 命令 linspace ,它有两个格式: a1=linspace(1,100) %生成一个从1到100的有100 个元素的向量 a2=linspace(0,1) %仍然是有 100 个元素但是是从 0 到 1 的向量 a3=linspace(0,-1) %请与上一个向量进行比较 上面是第一种格式 linspace(a,b),它是将 a 到 b 等分成 100份形成的向量。第二种 格式 linspace(a,b,n) 中的 n 为一个正整数,表示是从 a 到 b 等分成 n 份后形成的

相关文档
最新文档