注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

姜允志博客

Matlab VC++ 流形学习 进化算法 图像分割 目标提取 张量分解

 
 
 

日志

 
 

Matlab手册3  

2011-04-12 13:41:12|  分类: Matlab |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

matlab图形基础

本文来自: MATLAB爱好者论坛(MATLABFAN) 作者: admin 日期: 2009-6-10 17:58 阅读: 1225 人 打印 收藏 // 大 中 小

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));
plot(x,y)
这里x和y的尺寸都是101×3,所以画出每条都是101点组成的三条曲线。如行列转置后就会画出101条曲线,每条线由三点组成。
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,: ));
plot(x,y)
(d) 如果y是矩阵,则plot(y)绘出y中各列相对于行号的图形,对于n行矩阵,x轴的坐标为[1:n]。
(2)多组变量绘图( Multiple group variables plotting):
对于一系列相应的矩阵yi和xi, 可以使用多组变量绘图法:plot(x1,y1,x2,y2,…,xn,yn),
这种方法的优点是允许将不同大小的矩阵或矢量的图形绘制在一张图上。
例:多组变量绘图。
x=0:pi/50:2*pi; y1=sin(x); y2=0.6*sin(x); y3=0.3*sin(x); plot(x,y1,x,y2,x,y3)
(3)双y轴绘图:plotyy,
在一个图形窗口绘制两组数据曲线,共用一个x轴,图形两边各有一个y轴。两条图线可以调用不同的绘图方法。
例1:
x=0:0.3:12; y=exp(-0.3*x).*sin(x)+0.5; plotyy(x,y,x,y,'plot','stem')
左侧y轴对应plot形式的绘图,右侧y轴对应stem形式的曲线。
例2: 对于y坐标不同的情况。
t=0:900; A=1000; a=0.005; b=0.005; z1=A*exp(-a*t); z2=sin(b*t);
plotyy(t,z1,t,z2,'semilogy','plot')
3. 图线形式和颜色(Style and color of plot)
(1)     图线的形式: (style of plot)MATLAB提供的四种线形,
实线      虚线- - , 冒号线  : ,点划线 -- .
标记点类型: .  , + , *,  o, ×, s (或square),  d (或diamond), △, ▽, <,  >, p (或pentagram),  h (或hexagram),
plot(x,y,’—‘),   plot(x1,y1,’:’,x2,y2,’*’)
例1:选择不同的线形绘图。      
t=0:pi/100:2*pi; y=sin(t); y2=sin(t-0.25); y3=sin(t-0.5);
plot(t,y,'-',t,y2,'-',t,y3,':')
例2:选择不同的标记点绘图。
  t=0:pi/20:2*pi; x=t.^3; y=sin(t); plot(x,y,'o')
(2) 线的颜色(color of plot): MATLAB中可选的颜色: 红r,绿g,
蓝b, 黄y, 粉红m, 青c(cyan) 黑k.
例:t=0:pi/20:2*pi;
y=sin(t); plot(x,y,'r'),   plot(x,y,'g+')
(3) 图线的其他属性(other characters of plot): 可设置图线的宽度、标记点的边缘颜色、填充颜色、标记点的大小等。
  例: 设置图线的线形、颜色、宽度、标记点的颜色及大小。
t=0:pi/20:pi; y=sin(4*t).*sin(t)/2;
plot(t,y,'-bs','LineWidth',2,'MarkerEdgeColor','k', 'MarkerFaceColor', 'y','MarkerSize',10)
4. 复数绘图(Complex plotting):
plot用于函数绘制复数的图形时,通常虚部是被忽略的。但plot只作用于单个复变量z时,则绘出的是实部对虚部的关系图(复平面上的一组点)。即这时plot(z)等价于 plot(real(z)).
例: 画一个20 边的多边形(用exp函数生成),顶角用小圆圈表示。
t=0:pi/10:2*pi; plot(exp(i*t),'o'); axis('square')
如果在复平面绘制多重线 ,只能分别以实部和虚部为坐标来绘制,否则虚部将被忽略,并给出警告。
二. 图形的控制与表现(Figure control and representation)
MATLAB提供的用于图形控制的函数和命令:
axis:    人工选择坐标轴尺寸.
clf:    清图形窗口.
ginput: 利用鼠标的十字准线输入.
hold:  保持图形.
shg:   显示图形窗口.
subplot: 将图形窗口分成N块子窗口。
1. 图形窗口(figure window)
(1). 图形窗口的创建和选择(Creating and selecting of figure window)
figure(n)函数用于为当前的绘图创建图形窗口,每运行一次figure就会创建一个新的图形窗口,n表示第个n窗口,如果窗口定义了句柄,也可以用figure(h)将句柄h的窗口作为当前窗口。
clf 命令用于清除当前图形窗口中的内容。
shg命令用于显示当前图形窗口。
(2). 在一个图形窗口中绘制多个子图形(Drawing several subfigures in a single window)
subplot(m,n,p), 把窗口分成m×n个小窗口,并把第p个窗口当作当前窗口。
例:将4 个图形显示在同一个图形窗口中。
t=0:pi/20:2*pi; [x,y]=meshgrid(t);
subplot(2,2,1); plot(sin(t),cos(t)); axis equal
subplot(2,2,2); z=sin(x)+cos(y); plot(t,z); axis([0 2*pi –2 2])
subplot(2,2,3); z=sin(x).*cos(y); plot(t,z); axis([0 2*pi –1 1])
subplot(2,2,4); z=sin(x).^2-cos(y).^2; plot(t,z); axis([0 2*pi –1 1])
(3). 在一个已有的图形上绘图(Drawing a figure on the figure was existed):
用hold on命令在一个已有的图形上继续绘图,使用hold off命令结束继续绘图。
例:将peaks函数的等高线图与伪彩色画在一起。
[x,y,z]=peaks;             %产生双变量数组
contour(x,y,z,20,'k')        %绘制等高线
hold on
pcolor(x,y,z)               %绘制伪彩色图
shading interp             %表面色彩渲染
hold off
2. 坐标轴控制命令(Axis control commands)
  控制坐标性质的axis函数的多种调用格式:
axis(xmin xmax ymin ymax):指定二维图形x和y轴的刻度范围,
axis auto                   设置坐标轴为自动刻度(缺省值)
axis manual(或axis(axis))  保持刻度不随数据的大小而变化
axis tight                   以数据的大小为坐标轴的范围
axis ij        设置坐标轴的原点在左上角,i为纵坐标,j为横坐标
axis xy        使坐标轴回到直角坐标系
axis equal     使坐标轴刻度增量相同
axis square    使各坐标轴长度相同,但刻度增量未必相同
axis normal    自动调节轴与数据的外表比例,使其他设置失效
axis off        使坐标轴消隐
axis on        显现坐标轴
(1)     坐标轴的范围(Domain of coordinates axis):
二维图形坐标轴范围在缺省状态下是根据数据的大小自动设置的,如欲改变,可利用axis(xmin xmax ymin ymax),函数来定义。
例: 定义坐标轴范围对观察图形的影响。
x=0:.01:pi/2; figure(1); plot(x,tan(x),'-ro')     %ymax=tan(1.57),而其他数据都很小,结果将
%使图形难于进行观察和判断。
figure(2); plot(x,tan(x),'-ro'); axis([0, pi/2,0,5])  %对坐标轴的范围进行控制就可得到较满意的绘图结果
(2)显示比例对绘图结果的影响(Effect of display scaling on plotting results)
例:比较(Default, axis square, axis equal, axis tight)几种不同的显示方式的显示效果。
t=0:pi/20:2*pi; figure(1);   
subplot(2,1,1); plot(sin(t),2*cos(t)); grid on     %缺省状态下的图形比例
subplot(2,1,2); plot(sin(t),2*cos(t)); axis square; grid on       %正方形的显示比例
figure(2)
subplot(1,2,1); plot(sin(t),2*cos(t)) ; axis equal; grid on           %具有相等的刻度比例
subplot(1,2,2); plot(sin(t),2*cos(t)); axis tight ; grid on              %紧缩形式
3. 图形标注(Marking on the figure):MATLAB的图形标注方法
title       标题,
xlabel     x轴标注,
ylabel     y轴标注,
text       任意定位的标注                       
gtext      鼠标定位标注,
legent     标注图例
图形标注可以使用字母,数字,汉字或按规定的方法表示希腊字母,如\pi表示π,\leq表示≤,\rm表示后面的字恢复为正体字,\it表示斜体字,FontSize表示字体的大小, FontName表示字体的类型等。
  可以使用图形窗口的 Insert菜单,也可以使用属性编辑器,还可以使用函数输入的方法加标注,以下介绍相关函数的使用方法。
(1). 加注坐标轴标识和图形标题(Add axis labels and title of figure)
加注坐标轴标识:xlabel(‘s’), ylabel(‘s’)
图形标题: title(‘s’)
例:加注坐标轴标示和图形标题。
t=0:pi/100:2*pi;y=sin(t);
plot(t,y)
axis([0 2*pi,-1 1])
xlabel('0 \leq \itt \rm \leq \pi','FontSize',16)
ylabel('sin(t)','FontSize',20)
title('正弦函数图形','FontName','隶书','FontSize',20)
(2). 图中加注文本(Add text in the figure)
text(x,y,’字符串’)
例:在上图中加语句。
t=0:pi/100:2*pi;
y=sin(t);
plot(t,y)
axis([0 2*pi,-1 1])                                 
xlabel('0 \leq \itt \rm \leq \pi','FontSize',16)
ylabel('sin(t)','FontSize',20)
title('正弦函数图形','FontName','隶书','FontSize',20)
text(3*pi/4,sin(3*pi/4),'\leftarrowsin(t)=0.707', 'FontSize',16)
text(pi,sin(pi),'\leftarrowsin(t)=0', 'FontSize',16)
text(5*pi/4,sin(5*pi/4),'sin(t)=-0.707\rightarrow','FontSize',16, ...
'HorizontalAlignment','right')
句中:
leftarrow 表示加一个向左的箭头
rightarrow表示加一个向右的箭头
HorizontalAlignment 表示右对齐水平排列
gtext函数用于在图形窗口上用鼠标直接在指定的位置上加注文本,调用格式:gtext(‘字符串‘)
例:
t=0:pi/100:2*pi;
y=sin(t);
plot(t,y)
axis([0 2*pi,-1 1])
xlabel('0 \leq \itt \rm \leq \pi','FontSize',16)
ylabel('sin(t)','FontSize',20)
title('正弦函数图形','FontName','隶书','FontSize',20)
gtext('MATLAB')
(3). 指定TeX字符
例:在标题中指定TeX字符
t=0:pi/100:2*pi;
alpha=-0.8;
beta=15;
y=sin(beta*t).*exp(alpha*t);
plot(t,y)
title('{\itAe}^{-\it\alpha\itt}sin\it\beta{\itt}\it\alpha<<\it\beta')
xlabel('时间\mus.'),
ylabel('幅值')
在title中的字符串表现的是 Aeαt  sinβt  α<<β
{\itAe}^{-\it\alpha\itt} sin\it\beta{\itt}\it\alpha<<\it\beta’
斜体Ae 上标斜体αt   斜体βt     斜体α   斜体β
4.在图形中添加图例框(Add legend in the figure)
legend(字符串1, 字符串2,…)
例:在当前图形中添加图例说明。
x=0:pi/10:2*pi;
y1=sin(x);
y2=0.6*sin(x);
y3=0.3*sin(x);
plot(x,y1,x,y2,'-o',x,y3,'-*')
legend( '曲线1','曲线2','曲线3')
legend('boxoff')
legend函数的其他功能见(表 6—8)
三. 特殊图形(Special figure)
1. 条形图(Bar figure): bar(y), bar(x,y), barh, bar3(y), bar3(x,y), bar3h(x,y)
(1) 二维条形图 :bar(y), bar(x,y), barh,
(a).如果y是矢量,bar(y) 绘制最简单的条形图, 每一个条形图的位置由y元素的下标决定,高度由y元素的大小决定。
例1:
a=[1 3 5;4 3 7;2 8 4]; bar(a)
(b) 当y是m×n阶的矩阵时,bar(y) 绘制的条形图以分组或叠加的形式表现。矩阵中每一行元素绘制在一组中,每一列元素绘制在每组中相对应的位置上(各组中同样颜色的条形表示同一列数据)。
例2:
y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; bar(y)
例3:绘制分组形式的水平条形图。
y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; barh(y)
例4:绘制叠加形式的条形图。
y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; bar(y,’stack’)
例5:绘制叠加形式的水平条形图。
y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; barh(y,'stack')
(b) 使用bar(x,y)绘制指定x坐标的条形图,其中x必须是矢量,用于确定各组条形图的位置。
例1:指定x坐标的二维条形图,
x=[1 2 4 7 10]; y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; bar(x,y)
例2:指定x坐标的水平二维条形图,
x=[1 2 4 7 10]; y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; barh(x,y)
例3:绘制指定x坐标的叠加形式的二维条形图。
x=[1 2 4 7 10]; y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; bar (x,y,'stack')
如果y也是矢量,对应每一个x坐标有一个条形,条形的高度表示了矢量y元素的大小。
例4:
x=0:pi/10:2*pi; y=sin(x); bar(x,y)
(2). 三维条形图:bar3(y),将m×n阶的矩阵绘制成分布在三维空间中的柱体,有分组形式和分列形式两种。
例1:分组形式的三维条形图。
y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; bar3 (y,'group')
例2:分列形式的三维条形图。
y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2]; bar3 (y)
(3)条形图中的图形叠加:通过在相同的位置创建一个与原来条形图中的坐标轴相对独立的新的坐标轴实现条形图的叠加。
例: 有两组实验数据,一组表示物质成分(TCE),一组表示温度(temp),数据是在35天中每隔5天的采样,将物质成分和温度与时间的关系画在一张图中。
TCE=[515 420 370 250 135 120 60 20];   %实验数据
temp=[29 23 27 25 20 23 23 27];
days=0:5:35;                         %采样天数
bar(days,temp,'c')                    %温度与时间的条形图
xlabel('Day')
ylabel('Temperature (^{o}C)')
h1=gca;                             %获取当前轴对象句柄
h2=axes('position',get(h1,'position'));   
%建立新的与h1位置相同的对象句柄
plot(days,TCE,'LineWidth',3)      
%在以为句柄的坐标对象上绘制物质成分与时间的关系曲线
set(h2,'YaxisLocation','right','color','none','Xticklabel',[])
%设置句柄为h2的坐标轴对象的y轴为右侧。
set(h2,'Xlim',get(h1,'Xlim'),'Layer','top')
%设置句柄为h2的坐标轴对象的x轴的范围与句柄为h1 的%坐标轴对象轴的范围相同。
text(11,380,'Concentration','Rotation',-55,'FontSize',16)
% 在坐标为 [11,380] 的位置以旋转-55°%的方向书写concentration
ylabel('TCE Concentration (PPM)')
title('Bioremediation','FontSize',16)
饼图(pie): 用于表示矢量或矩阵中各元素所占有的比例。, 函数pie和pie3提供平面饼图和三维饼图的绘图功能。
  *pie(x)    使用x中的数据绘制饼图,x中的每一个元素用饼图中的一个扇区表示。
*pie(x,explode) 将一些扇区从饼图中分离出来,explode为一个与 x尺寸相同的矩阵,其非零元素所对应的x矩阵中的元素从饼图中分离出来。
(1) 不分离饼图: pie(x)
例1:不分离饼图:
x=[5.5 74.7 44.5 33.2 46.6]; pie(x)
(2) 带分离切块的饼图:在矢量x的后面加一个与x相同长度的矢量,该矢量中所有不为0的元素所对应的矢量x中的切块将被分离出来。
例2:
x=[5.5 74.7 44.5 33.2 46.6]; pie(x,[0 0 0 0 1])          %分离第5块
(3) 不完整的饼图:当x的全部元素之和小于1时绘制的是不完整饼图。
例3:
x=[0.2 0.3 0.4]; pie(x)
(4) 三维饼图:有一定厚度的饼图, 由函数pie3实现,调用方法与二维饼图相同。
例:带分离切块的三维饼图。
pie3([1 2 3 4 5],[0 1 0 1 0])   
3. 其他图形(Other figures): MATLAB有20多种特殊图形的绘制方法,下述为常用方法。
(1)直方图(hist): 一种统计运算的结果,它的横轴是数据的幅度,纵轴是对应于各个幅度数据出现的次数,直方图没有负数。
例 1:直角坐标系下矢量的直方图。
  yn=randn(10000,1);
figure(1)
hist(yn)       %缺省状态下画10个条形
figure(2)
hist(yn,20)      %可以设置n个条形个数
例2:直角坐标系下的三维数组的直方图。
y=randn(10000,3);
figure(1)
hist(y)       %缺省状态下画10个条形
figure(2)
hist(y,20)      %hist(y,n)可以设置条形个数为n
(2) 用杆状图表现离散数据
例1:二维杆状图。
x=0:0.2:10; y=exp(-0.3*x).*sin(x);
figure(1); stem(x,y)
figure(2); stem(x,y,':sr')      %可用字符串改变线形、标记点形状和颜色
例2: 用三维杆状图表现复平面快速傅立叶变换计算。
th=(0:127)/128*2*pi; x=cos(th); y=sin(th); f=abs(fft(ones(10,1),128));
stem3(x,y,f','d','fill')
xlabel('实部'); ylabel('虚部'); zlabel('幅值')
title('频率响应幅值')
例2:用三维杆状图与其他图形的叠加表现拉普拉斯变换基函数。
t=0:0.1:10; s=0.1+i; y=exp(-s*t);                            %计算延迟指数
stem3(real(y),imag(y),t,'m'); hold on
hline=(plot3(real(y),imag(y),t,'k')        %返回三维曲线图的句柄
hold off; set(hline,'LineWidth',3)               %设置线宽
xlabel('实部'); ylabel('虚部'); zlabel('幅值')
(3) 阶梯图
阶梯图的表现方法:调用函数stairs(x,y),每一阶梯的起始点为矢量y的数据点。
(STAIRS(X,Y) draws a stairstep graph of the elements in vector Y at
    the locations specified in X.  The X-values must be in
    ascending order and evenly spaced.)
例:绘制函数 阶梯图。
alpha=0.01; beta=0.5; t=0:10; f=exp(-alpha*t).*sin(beta*t);
stairs(t,f); hold on; plot(t,f,':*')            %绘制虚线图以说明阶梯图阶梯起始点的位置
hold off; label='函数e^{-(\alpha*t)} sin\beta*t的阶梯图';
text(0.5,-0.2,label,'FontSize',14); xlabel('t=0:10','FontSize',14); axis([0 10 -1.2 1.2])
(4) 彩色分散点图(Color scatter figure)
彩色分散点图函数:scatter(x,y,c,s)    x, y为两个矢量,用于定位数据点,s为绘图点的大小,c为绘图所使用的色彩,s和c均可以以矢量或表达式形式给出,s和c为与x或y同长度的矢量时标记点尺寸和颜色将按线性规律变化。在 scatter函数的前4各参数之后还可以增加第五个参数‘ filled‘,表示填充绘图点。Scatter与plot 的最大差别在于Scatter可以绘制变尺寸、变颜色的点图。
例:给定数据t=0:pi/10:2*pi, y=sin(t),观察在不同输入参数时函数的绘图结果。
t=0:pi/10:2*pi; y=sin(t)
subplot(3,2,1); scatter(t,y)
subplot(3,2,2); scatter(t,y,'v')
subplot(3,2,3); scatter(t,y,(abs(y)+2).^4,'filled')
subplot(3,2,4); scatter(t,y,30,[0:2: 40],'v','filled')
subplot(3,2,5); scatter(t,y,(t+1).^3,y,'filled')

 

RGB分量图显示程序:

VC的程序可上网查询,读出的数据存储在一个结构体IMAGE的变量中,IMAGE的DataA代表B(蓝色)分量,DataB代表G(绿色)分量,DataC代表R(红色)分量。
在Matalb里,用M=imread('lena.bmp')的形式可读取一幅bmp文件,如果bmp文件为彩色文件,M是一个X*Y*3的三维矩阵,第一维M(:,:,1)为红色分量r,第二维M(:,:,2)为绿色分量g,第三维为红色分量。
需注意的是,用附件的C程序读出的数据,和Matlab里读出的数据“貌似”不一致。比如,对Lena这幅图像,VC中读出的绿色分量是:20,20,29,2d,2a......而Matlab里得到的数据矩阵开始是:90,90,8e,90,8f......看起来好像不同,其实是相同的。原因在于matlab里读出的数据和vc程序读出的数据,其组织顺序不一样,把matlab得到的数据矩阵拉到最末一行,看看,数据是什么?没错,就是:20,20,29,2d,2a......其他都是一致的。

例:读取一幅图像,并分别显示其R\G\B分量
clear
clc
A=imread('lena.bmp');
[r c d]=size(A);
red(:,:,1)=A(:,:,1);
red(:,:,2)=zeros(r,c);
red(:,:,3)=zeros(r,c);
red=uint8(red);
subplot(1,3,1)
imshow(red)
title('Red Component');
green(:,:,2)=A(:,:,2);
green(:,:,1)=zeros(r,c);
green(:,:,3)=zeros(r,c);
green=uint8(green);
subplot(1,3,2)
imshow(green)
title('Green Component');
blue(:,:,3)=A(:,:,3);
blue(:,:,1)=zeros(r,c);
blue(:,:,2)=zeros(r,c);
blue=uint8(blue);
subplot(1,3,3)
imshow(blue)
title('Blue Component');

 

运行时间elapsed time

TIC Start a stopwatch timer.

    TIC and TOC functions work together to measure elapsed time.

    TIC saves the current time that TOC uses later to measure

    the elapsed time. The sequence of commands:

   

              tic

              operations

              toc

 

    measures the amount of time MATLAB takes to complete the one

    or more operations specified here by "operations" and displays

    the time in seconds.

加快MATLAB执行速度的技巧:

1.      尽量用向量化的运算来代替循环操作。

2.      在必须使用多重循环的情况下, 如果两个循环执行的次数不同,则建议在循环的外环执行循环次数少的,内循环执行次数多的。这样也可以显著提高速度。

3.      给大型矩阵动态地确定维度是一个相当费时的时间的操作,建议在定义大矩阵时,首先用Matlab的内在函数,如zeros()或ones()对之先进行定维,然后再进行赋值处理,这样会显著减少所需要的时间。

4.       矩阵运算应该尽量采用Matlab的内在函数,因为内在函数是有更底层的编程语言C构成。

 

取矩阵元素

x(i,:)代表第i的所有元素.x(:,i)代表的是第i列的所有元素.x([i:k],:)则代表X的i到k行的所有元素.如果只想单独要第i行和第j行的元素,x([i,j],:)就行了.同样读取列也是类似.

x(:)表示把所有的x的数据作为一个列向量。

Blkproc用法:把矩阵I 按[2*2]的大小分成块。然后求每一块的最小值“min(x(:))“

[x,y]=find(I==13)  返回等于13的坐标

I=magic(4);

blocks=blkproc(I,[2 2],'min(x(:))');

I =

 

    16     2     3    13

     5    11    10     8

     9     7     6    12

     4    14    15     1

blocks =

 

2     3

     4     1

 

Imresize用法(接上面)

background=imresize(blocks,[5 5],'bilinear');

>> background

 

background =

 

    2.0000    2.1000    2.5000    2.9000    3.0000

    2.2000    2.2600    2.5000    2.7400    2.8000

    3.0000    2.9000    2.5000    2.1000    2.0000

    3.8000    3.5400    2.5000    1.4600    1.2000

4.0000    3.7000    2.5000    1.3000    1.0000

 

改变图像大小

Y=imresize(X,M,Method)

X是图像 M 是放大的倍数 Method是插值方法(nearest(默认),bilinear,bicubic)

用户还可以指定图像输出的大小,其中参数的两个分量分别输出图像的行数和列数。

Y=imresize(X,[200 480]) 表示将X输出为200*480的图像。

 

滑动领域操作函数

Y=nlfilter(X,’index’,[m,n],fun,P1,P2,….)

Index是可选参数,如果指定了这个参数则表示函数把图像X作为索引图像进行处理。

fun是对滑动领域m*n矩阵进行操作的函数。P1,P2,…是传递给fun的附加参数。

用户编写的myfun.m可以被nlfilter函数所调用:B=nlfilter(A,[3 3],@myfun);

 

 

把矩阵数据输出到一个txt文件中:

Create a text file called exp.txt containing a short table of the exponential function. (On Windows platforms, it is recommended that you use fopen with the mode set to 'wt' to open a text file for writing.)
x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('exp.txt', 'wt');
fprintf(fid, '%6.2f %12.8f\n', y); %这就是对x,exp(x)的控制输出,其中x为6位,exp(x)为12位,不足%以空格补上,而对应的2,8为输出精度。
fclose(fid);

Now examine the contents of exp.txt:


type exp.txt
   0.00    1.00000000
   0.10    1.10517092
       ...
   1.00    2.71828183

-------------------------------------------------

J;%矩阵

fid = fopen('matrixData.txt','wt');%把J输出到matrixData.txt

fprintf(fid,'%6.2f\n',J);% matrixData.txt中数据时一长列。


fclose(fid);


 

将Matlab中的矩阵写入txt文件的方法:http://blog.sina.com.cn/s/blog_65e27be30100ir31.html

文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。
1、文件的打开与关闭
1)打开文件
在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为:
fid=fopen(文件名,‘打开方式’)
说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:
 ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。
 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。
 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。
 ‘a’:在打开的文件末端添加数据。文件不存在则创建。
 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。
另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
2)关闭文件
文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为:
sta=fclose(fid)
说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。
2、二进制文件的读写操作
1)写二进制文件
fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:
COUNT=fwrite(fid,A,precision)
说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。
例6.8 将一个二进制矩阵存入磁盘文件中。
>> a=[1 2 3 4 5 6 7 8 9];
>> fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件
fid =
3 %其值大于0,表示打开成功
>> fwrite(fid,a,'double')
ans =
9 %表示写入了9个数据
>> fclose(fid)
ans =
0 %表示关闭成功
2)读二进制文件
fread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:
[A,COUNT]=fread(fid,size,precision)
说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。precision用于控制所写数据的精度,其形式与fwrite函数相同。
3、文本文件的读写操作
1)读文本文件
fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:
[A,COUNT]=fscanf(fid,format,size)
说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size为可选项,决定矩阵A中数据的排列形式,它可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。
2)写文本文件
fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:
fprintf(fid,format,A)
说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
例6.9 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
>> a='string';
>> fid=fopen('d:\char1.txt','w');
>> fprintf(fid,'%s',a);
>> fclose(fid);
>> fid1=fopen('d:\char1.txt','rt');
>> fid1=fopen('d:\char1.txt','rt');
>> b=fscanf(fid1,'%s')
b =
string

 

 

 

matlab读txt文件

fid=fopen('fx.txt','r'); %得到文件号
[f,count]=fscanf(fid,'%f %f',[12,90]);
%把文件号1的数据读到f中。其中f是[12 90]的矩阵
%这里'%f %f'表示读取数据的形势,他是按原始数据型读出
fclose(fid);
%关闭文件
另外有的txt文件还可以用load来打开
其语句为
f=load('fx.txt)

一个写入txt文件的小例子:

N=100;
R=rand(1,N);
fid = fopen('tt.txt','wt');
for k=1:N;
p=num2str(R(k));
fprintf(fid,'%c',p);
fprintf(fid,'%c\n',' ');
end
fclose(fid);

 

把一个矩阵原样写入文本文件txt文件的语句:

m=magic(3)

dlmwrite('data.txt',m,'delimiter','\t','newline','pc')

解释说明:

The element type "name" must be terminated by the matching end-tag "</name>".

Could not parse the file: d:\matlab7\toolbox\ccslink\ccslink\info.xml

 DLMWRITE Write ASCII delimited file.

 

    DLMWRITE('FILENAME',M) writes matrix M into FILENAME using ',' as the

    delimiter to separate matrix elements.

 

    DLMWRITE('FILENAME',M,'DLM') writes matrix M into FILENAME using the

    character DLM as the delimiter.

 

    DLMWRITE('FILENAME',M,'DLM',R,C) writes matrix M starting at

    offset row R, and offset column C in the file.  R and C are zero-based,

    so that R=C=0 specifies the first value in the file.

 

    DLMWRITE('FILENAME',M,'ATTRIBUTE1','VALUE1','ATTRIBUTE2','VALUE2'...)

    An alternative calling syntax that uses attribute value pairs for

    specifying optional arguments to DLMWRITE. The order of the

    attribute-value pairs does not matter, as long as an appropriate value

    follows each attribute tag.

 

      DLMWRITE('FILENAME',M,'-append')  appends the matrix to the file.

      without the flag, DLMWRITE overwrites any existing file.

 

      DLMWRITE('FILENAME',M,'-append','ATTRIBUTE1','VALUE1',...) 

      Is the same as the previous syntax, but accepts attribute value pairs,

      as well as the '-append' flag.  The flag can be placed in the argument

      list anywhere between attribute value pairs, but not between an

      attribute and its value.

 

    USER CONFIGURABLE OPTIONS

 

    ATTRIBUTE : a quoted string defining an Attribute tag. The following

                attribute tags are valid -

        'delimiter' =>  Delimiter string to be used in separating matrix

                        elements.

        'newline'   =>  'pc' Use CR/LF as line terminator

                        'unix' Use LF as line terminator

        'roffset'   =>  Zero-based offset, in rows, from the top of the

                        destination file to where the data it to be

                        written.                      

        'coffset'   =>  Zero-based offset, in columns, from the left side

                        of the destination file to where the data is to be

                        written.

        'precision' =>  Numeric precision to use in writing data to the

                        file, as significant digits or a C-style format

                        string, starting with '%', such as '%10.5f'.  Note

                        that this uses the operating system standard

                        library to truncate the number.

 

    EXAMPLES:

 

    DLMWRITE('abc.dat',M,'delimiter',';','roffset',5,'coffset',6,...

    'precision',4) writes matrix M to row offset 5, column offset 6, in

    file abc.dat using ; as the delimiter between matrix elements.  The

    numeric precision is of the data is set to 4 significant decimal

    digits.

 

    DLMWRITE('example.dat',M,'-append') appends matrix M to the end of

    the file example.dat. By default append mode is off, i.e. DLMWRITE

    overwrites the existing file.

 

    DLMWRITE('data.dat',M,'delimiter','\t','precision',6) writes M to file

    'data.dat' with elements delimited by the tab character, using a precision

    of 6 significant digits.

   

    DLMWRITE('file.txt',M,'delimiter','\t','precision','%.6f') writes M

    to file file.txt with elements delimited by the tab character, using a

    precision of 6 decimal places.

 

    DLMWRITE('example2.dat',M,'newline','pc') writes M to file

    example2.dat, using the conventional line terminator for the PC

platform.

在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.

Dos和windows采用回车+换行CR/LF表示下一行,

而UNIX/Linux采用换行符LF表示下一行,

苹果机(MAC OS系统)则采用回车符CR表示下一行.

CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D;

LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A.

所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.

一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件.

在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时. 有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错.

很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换.

在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化. 如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本.

 

Sort 排序

Matlab取整函数

(1)fix(x) : 截尾取整.

>> fix( [3.12 -3.12])

ans =

     3    -3
(2)floor(x):不超过x 的最大整数.(高斯取整)

>> floor( [3.12 -3.12])

ans =

     3    -4

(3)ceil(x) : 大于x 的最小整数

>> ceil( [3.12 -3.12])

ans =

     4    -3

(4)四舍五入取整

>> round(3.12 -3.12)

ans =

     0

>> round([3.12 -3.12])

ans =

3         -3

数据输出

MATLAB ——输出函数及导出数据(dispfprintf,dlmwrite,xlswrite)

2010-04-25 上午 00:20

disp即display,可用来显示字符串、计算结果等 例子:
x= [1 2 3];
disp(['The values of x are: ', num2str(x)]);
结果显示为:
The values of x are: 1   2   3

matlab导出数据(fprintf,dlmwrite,xlswrite)

1. 用fprintf 函数写数据到txt,xls

fprintf函数可以将数据按指定格式写入到文本文件中,也可以显示字符串、计算结果。
其调用格式为:
count = fprintf(fid, format, val1, val2, ...)
其中fid是我们要写入数据文件的文件标识,format是控制数据显示的字符串。如果fid丢失,数据将写入到标准输出设备(命令窗口)。 格式(format)字符串指定队列长度,小数精度,域宽和输出格式的其他方面。它包括文字数字字符(%)和字符序列(用于指定输出数据显示的精确格式)。
例子:
fprintf('%6.4d\n',123)   显示十进制整数数据
fprintf('%s\n','string') 显示字符数据
fprintf(1,'It''s Friday.\n')
结果显示为:It's Friday.

Example:

x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('exp.txt', 'w');
fprintf(fid, '%6.2f %12.8f\n', y);
fclose(fid)

tip:执行上述代码执行,肯定不会换行的,换行的问题试一下下面的代码

x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('exp.txt', 'wt');
fprintf(fid, '%6.2f %12.8f\n', y);
fclose(fid);
这次就没有问题了,我们要注意fopne的参数wt 而不是 w,这是matlab的在线帮助的东东
fid = fopen(filename, permission_tmode) on Windows systems, opens the file in text
mode instead of binary mode (the default). The permission_tmode argument consists
of any of the specifiers shown in the Permission Specifiers table above, followed
by the letter t, for example 'rt' or 'wt+. On UNIX? systems, text and binary mode
 are the same. (UNIX is a registered trademark of The
Open Group in the United States and other countries).
就是有两种读取模式binary or text. When choosing the binary model,No characters are
given special treatment. 所以我们选择要注明text模式。

2. dlmwrite :将一个矩阵写到由分隔符分割的文件中。

在保存整数到文件时使用save存为ascii文件时,常常是文件里都是实型格式的数据(有小数点,和后面很多的0,看着很不方便)。于是要保存此类数据时,我们可以使用此dlmwrite命令。
使用方法:
dlmwrite('filename', M)
使用默认分隔符“,”将矩阵M写入文本文件filename中;
dlmwrite('filename', M, 'D')
使用分隔符D分割数据,“\t”表示tab分割,“,”为默认分割符;
dlmwrite('filename', M, 'D', R, C)
从矩阵M的第R行、第C列开始,作为要写矩阵块的左上角,将数据用D分割写入文件。
其他用法有:
dlmwrite('filename', M, 'attrib1', value1, 'attrib2', value2, ...)
dlmwrite('filename', M, '-append')
dlmwrite('filename', M, '-append', attribute-value list)
例如:

a = [1 2 3; 4 5 6; 7 8 9];
dlmwrite('test.txt', a);

则test.txt中的内容为:
1,2,3
4,5,6
7,8,9
而使用save
a = [1 2 3; 4 5 6; 7 8 9];
save 'tst.txt' a -ascii;文本文件里的内容为:
          1.0000000e+000          2.0000000e+000          3.0000000e+000
          4.0000000e+000          5.0000000e+000          6.0000000e+000
          7.0000000e+000          8.0000000e+000          9.0000000e+000

3.xlswrite 写入excel

 

4.fprintf和dlmwrite区别
                                                                    
MATLAB在图像处理中的应用,实际是对图像矩阵的操做运算,MATLAB在图像处理中的常用的命令有:
imread(): 从图像文件夹中读取图像的函数;
imwrite(): 输出图像的函数;
imshow(), image(): 图像显示于屏幕的函数;
imcrop(): 对图像进行裁剪的函数;;
imresize(): 实现对图像的插值缩放的函数;
imrotate(): 用实现对图像的旋转。
im2double(),double(): 将图像数组转化为double类型;
im2uint8(),uint8(): 将图像数组转化为uint8类型;
im2uint16(),uint16(): 将图像数组转化为uint16类型;
关于上述的命令使用方法可以参考一些MATLAB方面的书籍或者用MATLAB自带的帮助(help or doc)命令.
如  我想知道dwt2()命令的使用方法 可以执行下面的命令
>> help dwt2 或 >>doc dwt2
系统就会告诉你它的使用要求和方法,如果系统说找不到对应的帮助文件,那就可能是你装的MATLAB里面没有这个命令,那很可能这个命令就不能使用.

在图像数组的输出到文件的操作上,我发现fprintf比dlmwrite明显快很多,但这两个输出的数据格式有些差别,见下面操作:
>> a=[1 2 3;4 5 6;7 8 9]

a =

            1            2            3
            4            5            6
            7            8            9
>>fid = fopen('exp.txt','w');
  fprintf(fid,'%2.0f\n',a);
  fclose(fid);
 
 >> type exp.txt
 
 1
 4
 7
 2
 5
 8
 3
 6
 9
 fprintf输出是一列一列的从左到右输出。
>> dlmwrite('eg2.dat',a,'\n');
>> type eg2.dat

1
2
3
4
5
6
7
8
9
dlmwrite输出是一行一行的从上到下输出。

下面是一个比较简单的图像处理程序:
clear;%清除当前工作区所有变量
data=imread('E:\2D前处理\eg1.bmp');%从图像文件夹中读取图像eg1.bmp
data=double(data);%将图像数组data转化为double类型
[x,y]=size(data);%求数组大小,x是data数组有多少行,y是data数组有多少列
data1=imresize(data,[x,y*2/1.732]);%实现对图像的左右插值放大2/1.732倍
[x,y]=size(data1);%%求放大后图像数组大小
fid = fopen('E:\2D前处理\Particle\test.dat', 'wt');%打开图像数组的将要输出到文件
fprintf(fid, '%2.0f\t%2.0f\n', x, y);%输出x,y值
fprintf(fid, '%2.0f\n', data1);%输出图像数组数据
fclose(fid);%关闭文件指针

删除向量中相同值的元素

unique

统计矩阵中相同元素的个数:

Matlab应用技巧

1.如果在一个矩阵中杂乱的分布这一组数据,且数据中有重复,想统计出相同数据出现的次数,可使用以下方法:

设该矩阵为a(1,20),则可以

a=[2.57,2.9,2.87,2.82,2.49,2.69,3.09,2.91,3.0,3.058,2.92,2.84,3.23,3.1,3.02,3.11,2.87,2.95,2.92,2.73];

 [m n]=hist(a,unique(a));

得到的结果n为相应的量,对应的m为n在a中出现的次数。x=unique(a);

m =[ 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1]

n =[ 2.4900 2.5700 2.6900 2.7300 2.8200 2.8400 2.8700 2.9000 2.9100 2.9200 2.9500 3.0000 3.0200 3.0580 3.0900 3.1000 3.1100 3.2300]

该方法不必对a排序后再统计,较为方便。

 

 

原帖由 xzh 于 2010-3-20 03:41 PM 发表
如workspace中有a、b、c.......z这N个变量,只想保留变量a,而删除其他的变量,用什么命令?

 

K>> who   %目前的變量
Your variables are:
a  b  c  
K>> clear -regexp [^a]
K>> who  %目前的變量
Your variables are:
a  
這樣就可以了

 

 

通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
& w   d0 ?   f$ O8 }' V3 Y
% H/ ?% B: D: b* A
两个异号整数取模取值规律          (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)% C, X# q$ h) h; I% {
6 H$ \   B9 ^0 r% D6 o0 P
先将两个整数看作是正数,再作除法运算
①能整除时,其值为0
②不能整除时,其值=除数×(整商+1)-被除数
例:mod(36,-10)=-4
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。 5 O9 s2 a6 u: Y; N5 K4 j8 v
例:mod(9,1.2)=0.6
例:
>> mod(5,2)
ans =1                %“除数”是正,“余数”就是正/ o) y6 N) O, F7 |& @0 I
>> mod(-5,2)+ k: G* E, y8 q0 \
ans =1) Z# w$ y: i* w8 W2 V; ]4 H
>> mod(5,-2)9 P* ^: q6 W% C: a- G( [8 v7 O( P
ans =-1                %“除数”是负,“余数‘就是负
>> mod(-5,-2)
ans =-1                %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
>> rem(5,2)+ |; z, A5 V1 s6 ^8 c% r
ans =1                %“被除数”是正,“余数”就是正
>> rem(5,-2)
ans =11 t! V: G' f) I: @" R
>> rem(-5,2)! O$ b! a) K' A1 W# C
ans =-1                 %“被除数”是负,“余数”就是负1 v3 x/ t& Z5 a$ y
>> rem(-5,-2)
ans =-12 F$ |) v! q! b. R9 n! R0 M

matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。Matlab主要数据类型的结构图如下所失:


整型:通过intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127

浮点

浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。

逻辑

Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0:

  评论这张
 
阅读(956)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017