Matlab程序设计

南笙酒味 提交于 2020-01-25 18:12:30

一、自定义函数

格式:函数句柄 = @(自变量列表)函数表达式

例1 定义函数,并计算f(x)在点x=-2,1,2.5,3,5.2的值。

f=@(x)x.^2+3*x+5  x=[-2,1,2.5,3,5.2]  y1=f(x)

二、 m-文件函数(子程序) 格式:function    [y1,y2]=ff(x1,x2)                              ……                               y1=…                               y2=… 输入变量:x1,x2,输出变量:y1,y2 注:输入、输出变量可以为1个或多个。

例3 建立函数,实现输入矩阵x,输出x的最大元素与最小元素以及该矩阵的秩。然后调用该函数。

function [M,m,r]=fun303(x)
               r=rank(x);  
               b=x(1:end);
               y=sort(b);
               M=y(end);
               m=y(1);

 流程控制语句

一、分支结构

1. if条件语句

2.  switch 分值选择语句

例4 自定义函数, 对数组x做如下处理: 记数组x所有元素和为s, (1)若s除以5余数为1,     求出x中所有奇数的和。 (2)若s除以5余数为4,    求出x中所有偶数的和。 (3)其余情况求出x中    最大值与最小值的差。

function y=ff(x)
switch mod(sum(x),5);
case 1
    t=mod(x,2); y=sum(t.*x);
case 4
    t=1-mod(x,2); y=sum(t.*x);
otherwise          
      y=max(x)-min(x);% t=sort(x);
       y=t(end)-t(1);
end

 x=[2,-4,3,6,7,11]
 y=ff(x)

二、循环结构

 1. for 循环语句

若数组为行向量,依次取数组元素执行循环体。 若数组为矩阵,依次取矩阵的列执行循环体

 例5 随机生成15个0~99的整数构成数组x,并构造下列数组:
(1)将数组x的第偶数个元素平方,其余元素不变。
(2)将数组x的第偶数个元素乘以2,其余元素置0。
  x=floor(rand(1,15)*100);  
  y1=x; 
  y2=zeros(1,15);
  for i=2:2:14 
     y1(i)=x(i)^2;
     y2(i)=2*x(i);
  end
 [x;y1;y2]  
 例6 数组x=(8,3,5,-1,6,10,7,2,9,11),求出其中所有除以5余1的元素之和
         以及所有除以5余4的元素之和.  
   x=[8,3,5,-1,6,10,7,2,9,11];
   s1=0; s2=0;   
  for m=x
     switch mod(m,5)
       case 1
        s1=s1+m;
      case 4
      s2=s2+m;
    end
  end  
  s1,s2
  不用循环完成
  x=[8,3,5,-1,6,10,7,2,9,11];
  i1=find(mod(x,5)==1);
  s1=sum(x(i1))   
  i2=find(mod(x,5)==4);
  s2=sum(x(i2))

2. while-end 循环语句

注:表达式一般是由逻辑运算和关系运算组成的表达式, 表达式的值非零继续循环,表达式值为0终止循环。

例8 记三位正整数x的
个位为a,十位为b,百位为c
求出满足ab-2c=4a+b(c+2)的
第一个三位数。
N=100; m=1;
while m
    a=mod(N,10);
    b=mod((N-a)/10,10);
    c=(N-a-10*b)/100;
    if  a*b-2*c==4*a+b*(c+2)
        m=0;
       N1=N;
    end
    N=N+1;
end
N1

三、 程序的流程控制命令:

  continue   终止一次循环   break        结束循环

例9  在20-100的整数中,
    找出不能被2或3或5或7
    整除的数
 clear,clc
 i=1;
 for n=20:100
    if mod(n,2)==0|mod(n,3)==0
       |mod(n,5)==0|mod(n,7)==0
        continue
    else          
       X(i)=n; i=i+1;
    end
end
X 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!