Matlab 变量地检查测试传递和限权运用函数

来源:互联网
发表时间:2008/7/1 1:45:02
责任编辑:鲁晓倩
字体:

8.5 变量的检测传递和限权使用函数

8.5.2 “变长度”输入输出宗量

【 * 例 8.5.2 -1 】变长度宗量使用示例。

(1)编写函数文件 ringzy.m

[ringzy.m]

function varargout = ringzy(r,varargin)

%RINGZY Plot a ring and calculate the area of the ring.

% r 基圆半径

% 调用格式

% [x1,y1,x2,y2,s1,s2]=ringzy(r,r2,'PropertyName','PropertyValue',...)

% ( 1 )无输出时,绘圆或环。

% ( 2 )有输出时,不绘图。

% (x1,y1),(x2,y2) 分别是两个圆的坐标点;

% s1 是基圆面积;

% s2 为正值时,表示内环面积;为负值时,表示外环面积。

vin=length(varargin);Nin=vin+1; %<11>

error(nargchk(1,Nin,nargin)) % 检查输入变量数目是否合适

if nargout>6 % 检查输出变量数目是否合适

error( 'Too many output arguments' )

end

t=0:pi/20:2*pi;x=r*exp(i*t);s=pi*r*r;

if nargout==0

switch Nin

case 1

plot(x, 'b' )

case 2

r2=varargin{1}; %<22>

x2=r2*exp(i*t);

plot(x, 'b' );hold on ;plot(x2, 'b' );hold off

otherwise

r2=varargin{1}; %<26>

x2=r2*exp(i*t);

plot(x,varargin{2:end});hold on % 利用元胞数组设置对象属性 <28>

plot(x2,varargin{2:end});hold off % 利用元胞数组设置对象属性 <29>

end ;

axis( 'square' )

else

varargout{1}=real(x);varargout{2}=imag(x); %<33>

varargout{5}=pi*r*r;varargout{6}=[]; %<34>

if Nin>1

r2=varargin{1}; %<36>

x2=r2*exp(i*t);

varargout{3}=real(x2);varargout{4}=imag(x2); %<38>

varargout{6}=pi*(r^2-r2^2); %<39>

end ;

end

(2)有输出情况 :请读者自己用 plot(x1,y1,x2,y2) 检验下列三个调用示例的运行结果。

r1=1;r2=3;

[x1,y1,x2,y2,s1,s2]=ringzy(r1);

[x1,y1,x2,y2]=ringzy(r1,r2);

[x1,y1,x2,y2,s1,s2]=ringzy(r1,r2);

(3)无输出情况:为节省篇幅,在此给出三个调用示例。

r1=1;r2=0.6;

subplot(1,3,1),ringzy(r1,r2),

subplot(1,3,2),ringzy(r1,r2,'Marker','o')

subplot(1,3,3),ringzy(r1,r2,'LineWidth',5,'Color',[1 0.4 0]) 点击图片看大图中国学网 www.xue163.com

图 8.5.2 -1-1 变长度输入宗量不同调用格式产生的图形

8.5.3 跨空间变量传递

8.5.3.1 跨空间计算串表达式的值

【 * 例 8.5.3 .1-1 】 evalin 运行机理与 eval 的异同。

(1)编写 M 函数文件

[evalinzzy.m]

function y1=evalinzzy(a,s)

t=(0:a)/a*2*pi;

y1=subevalinzzy(4,s);

%------------ subfunction -------------

function y2=subevalinzzy(a,s)

t=(0:a)/a*2*pi;ss= 'a*exp(i*t)' ;

swi[1] [2]    $网神分页符$ tch s

case { 'base' , 'caller' }

y2=evalin(s,ss);

case 'self'

y2=eval(ss);

end

(2)在 Notebook 或 MATLAB 指令窗中运行以下指令

clear,a=30;t=(0:a)/a*2*pi;sss={'base','caller','self'};

for k=1:3

y0=evalinzzy(8,sss{k});

subplot(1,3,k)

plot(real(y0),imag(y0),'r','LineWidth',3),axis square image

end 点击图片看大图

图 8.5.3 .1-1 利用不同工作空间中的变量值计算 eval('a*exp(i*t)')

8.5.3.2 跨空间赋值

【 * 例 8.5.3 .2-1 】 assignin 运作机理示范。

(1)编写 M 函数文件

[assigninxyq.m]

function y=assigninxyq(x)

y=sqrt(x);t=x^2;

assignin( 'base' , 'yy' ,t) 

(2)在 Notebbok 或 MATLAB 指令窗中运行以下指令

clear;x=4;y=assigninxyq(x);

disp([blanks(5),'x',blanks(5),'y',blanks(4),'yy']),disp([x,y,yy])

x y yy

4 2 16     [1] [2] 

www.xue163.com true /2/25475.html report 6041 Matlab变量地检查测试传递和限权运用函数,8.5变量的检测传递和限权使用函数8.5.2“变长度”输入输出宗量【*例8.5.2-1】变长度宗量使用示例。(1)编写函数文件ringzy.m[ringzy.m]functionvarargout=ringzy(r,varargin)%RINGZYP...
最近关注
首页推荐
热门图片
最新添加资讯
24小时热门资讯
Matlab 变量 检查matlab 清除变量matlab 变量 检查matlab title 变量matlab 变量matlab 删除变量matlab定义变量matlab gui 全局变量matlab 全局变量matlab如何定义变量matlab全局变量matlab怎么定义变量matlab中定义变量matlab全局变量定义matlab定义符号变量matlab定义变量类型
精彩资讯
精彩推荐
热点推荐
真视界
精彩图片
社区精粹
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2016 Xue163.com All Rights Reserved. 中国学网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
新闻中心 | 软件教室 | 设计大全 | 网络相关 | 英语学习 | 开发编程 | 考试中心 | 参考范文 | 管理文库 | 营销中心 | 站长之家 | IT信息中心 | 商学院 | 数码大全 | 硬件DIY | 企业服务 | 网吧在线 | 问吧 | 百科 | 硬件知识 | 本网视点 | 文库 | 手机 | 平板 | 汽车 | 游戏 | 家电 | 精彩摄影 | 时尚科技 | 现代家居 | IT女人 | 经验 | 每日新闻 | 健康养生 | 图书馆 | 猎奇 | 精彩看点 | 图库 | 新闻中心 | 软件教室 | 设计大全 | 网络相关 | 英语学习 | 开发编程 | 考试中心 | 参考范文 | 管理文库 | 营销中心 | 站长之家 | IT信息中心 | 商学院 | 数码大全 | 硬件DIY | 企业服务 | 网吧在线 | 问吧 | 百科 | 硬件知识 | 本网视点 | 文库 | 手机 | 平板 | 汽车 | 游戏 | 家电 | 精彩摄影 | 时尚科技 | 现代家居 | IT女人 | 经验 | 每日新闻 | 健康养生 | 图书馆 | 猎奇 | 精彩看点 | 图库编程 方案 信息windows方案windows answer文档机构教育文档问答中心IT编程数码信息解决方案信息中心IT科技