Matlab数学建模4.3-4.4

文章详细介绍了MATLAB中参数传递的原理和方式,包括固定和可变数目参数、返回修改的输入参数以及全局变量的使用。同时,重点讨论了一维和二维插值函数的应用,如interp1和interp2,以及样条插值方法。
摘要由CSDN通过智能技术生成

目录

4.3 参数传递函数

4.3.1 输入和输出参数的数目

4.3.2 可变数目的参数传递

4.3.3返回被修改的输入参数

4.3.4 全局变量

4.4 插值函数

4.4.1 一维插值命令及案例

4.4.2 二维插值命令及案例

4.4.3 样条插值


4.3 参数传递函数


        matlab中的参数传递是传值传递,传入的实际变量赋值为形式参数指定的变量名,储存在函数中,与工作区变量空间彼此独立。每个函数调用都有独立的函数空间。


4.3.1 输入和输出参数的数目

        通过natgin和nargout函数,确定调用时实际传递的输入和输出参数情况。

function [n1,n2]=mythe(m1,m2)
if nargin==1
    n1=m1;
    if nargout==2
        n2=m1;
    end
else
    if nargout==1
        n1=m1+m2;
    else
        n1=m1;
        n2=m2;
    end
end

4.3.2 可变数目的参数传递

        使用varargin和varargout函数实现可变参数的参数传递,将函数调用时传递的参数封装成一个元胞数组。

function y=myth(x)
a=0;
for i=1:1:length(x)
    a=a+mean(x(i));
end
y=a/length(x);

4.3.3返回被修改的输入参数

        matlab函数具有独立于工作区之外的变量空间,因此输入参数在函数内部的修改,如果不指定将此修改后输入的参数值返回到工作空间,则函数调用结束后,修改后的值都将被自动清除

        (1)函数内部输入参数修改

function y=mythe(x)
x=x+2;
y=x.^2;

        (2)返回matalb工作区

function [y,x]=mythee(x)
x=x+2;
y=x.^2;

4.3.4 全局变量

        使用全局变量从函数内部修改matlab工作区变量。使得matlab工作空间和函数空间共享。global variable

function y=myt(x)
global a;
a=a+9;
y=cos(x);

        调用

global a
a=2
myt(pi)
a

4.4 插值函数


        数字信号和图像处理中。插值函数保存在matlab工具箱的polyfun工具箱中。


4.4.1 一维插值命令及案例

        使用interp1()实现。找出一元函数f(x)在中间点的数值。


4.4.2 二维插值命令及案例

clear all
clc
[x,y]=meshgrid(-5:1:5);						%原始数据
z=peaks(x,y);
[xi,yi]=meshgrid(-5:0.8:5);						%插值数据
zi_nearest=interp2(x,y,z,xi,yi,'nearest');				%临近点插值
zi_linear=interp2(x,y,z,xi,yi);					%系统默认为线性插值
zi_spline=interp2(x,y,z,xi,yi,'spline');				%三次样条插值
zi_cubic=interp2(x,y,z,xi,yi,'cubic');				%三次多项式插值
figure;									%数据显示
hold on;
subplot(321);
surf(x,y,z);									%绘制原始数据点
title('原始数据');
subplot(322);
surf(xi,yi,zi_nearest);							%绘制临近点插值的结果
title('临近点插值');
subplot(323);
surf(xi,yi,zi_linear);							%绘制线性插值的结果
title('线性插值');
subplot(324);
surf(xi,yi,zi_spline);							%绘制三次样条插值的结果
title('三次样条插值');
subplot(325);
surf(xi,yi,zi_cubic);							%绘制三次多项式插值的结果
title('三次多项式插值');

注意事项:

(1)二维插值中已知数据(x,y)必须是栅格格式,一般用meshgrid产生。

(2)interp2要求已知数据必须严格单调。

(3)如果数据(x,y)在平面上分布不等间距,则interp2会将其转化为等间距如果数据已经等间距,则可以在method参数前面加星号‘*’,例如‘cubic’变为‘*cubic’,来提高插值速度。


4.4.3 样条插值

        三次样条插值可以采用函数spline。

clear all
clc
x = [0 2 4 5 8 12 12.8 17.2 19.9 20];  
y = exp(x).*sin(x);
xx = 0:.25:20;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值