首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 工具软件 > Matlab 变量的检测传递和限权使用函数
【标  题】:Matlab 变量的检测传递和限权使用函数
【关键字】:函数,at,Matlab
【来  源】:网络

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


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])


图 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)' ;
switch 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

Matlab 串演算函数:【上一篇】
Matlab 脚本文件和函数文件:【下一篇】
【相关文章】
  • Matlab 调试器的使用
  • Matlab 面向对象编程
  • Matlab 模型的创建
  • Matlab 连续系统建模
  • Matlab 子系统的创建、装帧及受控执行
  • Matlab 离散时间系统和混合系统
  • Matlab SIMULINK的分析工具
  • Matlab 数值计算方面的考虑
  • Matlab 图形对象的操作
  • Matlab 对象属性的获取和设置
  • 【随机文章】
  • Microsoft Windows Small Business Server 2003中文版贱卖
  • DB2基础:SQL分页
  • 现代管理学派
  • Servlet版本的HelloWorld(附环境配置)
  • 光纤与六类:谁离你的目标近
  • MyXaml
  • 使用地址转换实现负载均衡
  • 从硬件看CWDM优势何在
  • 域名专题 - 域名解析系统DNS的网络流量分析
  • 什么时候存储过程更适用
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.