加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab程序设计举例1

(2011-04-12 22:01:26)
标签:

杂谈

分类: —MATLAB

 

1.有一周期为4p的正弦波上叠加了方差为0.1的正态分布的随机噪声的信号,用循环结构编制一个三点线性滑动平均的程序。(提示:①用0.1*randn(1,n)产生方差为0.1的正态分布的随机噪声;②三点线性滑动平均就是依次取每三个相邻数的平均值作为新的数据,如x1(2)=(x(1)+x(2)+x(3))/3x1(3)=( x(2)+x(3)+x(4))/3……)

 

程序:

 

   t=0:pi/50:4*pi;

   n=length(t);

   y=sin(t)+0.1*randn(1,n);

   ya(1)=y(1);

   for i=2:n-1

       ya(i)=sum(y(i-1:i+1))/3;

   end

   ya(n)=y(n);

   plot(t,y,'c',t,ya,'r','linewidth',2)

 

结果:

http://s13/middle/6ff31463ga0b92ceae4cc&690

2.编制一个解数论问题的函数文件:取任意整数,若是偶数,则用2除,否则乘31,重复此过程,直到整数变为1

 

程序:

function c=collatz(n)

   % collatz

   % Classic “3n+1” Ploblem from number theory

   c=n;

   while n>1

      if rem(n,2)==0

         n=n/2;

      else

         n=3*n+1;

      end

      c=[c n];

   end

 

调用:

collatz(25)

 

结果:

ans =

  Columns 1 through 20

    25    76    38    19    58    29    88    44    22    11    34    17    52    26    13    40    20    10       16

  Columns 21 through 24

              1

 3.有一组学生的考试成绩(见表),根据规定,成绩在100分时为满分,成绩在90~99之间时为优秀,成绩在80~89分之间时为良好,成绩在60~79分之间为及格,成绩在60分以下时为不及格,编制一个根据成绩划分等级的程序。

学生姓名

成 

72

83

56

94

100

88

96

68

54

65

程序:(可扩展)

Name=['王','张','刘','李','陈','杨','于','黄','郭','赵'];
   Marks=[72,83,56,94,100,88,96,68,54,65];
   % 划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(<60)。
   n=length(Marks);
   for i=1:10
      a{i}=89+i;
      b{i}=79+i;
      c{i}=69+i;
      d{i}=59+i;
   end;
   c=[d,c];
   % 根据学生的分数,求出相应的等级。
   for i=1:n
      switch Marks(i)
      case 100      %得分为100时
         Rank(i,:)=' 满分';
      case a                %得分在90~99之间
         Rank(i,:)=' 优秀';
      case b         %得分在80~89之间
         Rank(i,:)=' 良好';
      case c             %得分在60~79之间
         Rank(i,:)=' 及格';
      otherwise          %得分低于60。
         Rank(i,:)='不及格';
      end
   end
   % 将学生姓名,得分,级等信息打印出来。
   disp(' ')
   disp(['学生姓名  ','  得分  ','   等级']);
   disp('--------------------------')
   for i=1:n;
     disp(['   ',Name(i),'    ',num2str(Marks(i)),'   ',Rank(i,:)]);
   end

运行结果:

学生姓名    得分     等级
--------------------------
   王    72    及格
   张    83    良好
   刘    56   不及格
   李    94    优秀
   陈    100    满分
   杨    88    良好
   于    96    优秀
   黄    68    及格
   郭    54   不及格
   赵    65    及格

 

 4.编写一段程序,能够把输入的摄氏温度转化成华氏温度,也能把华氏温度转换成摄氏温度。

程序:

k=input('选择转换方式(1--摄氏转换为华氏,2--华氏转换为摄氏):');
   if k~=1 & k~=2
      disp('请指定转换方式')
      break
   end
   tin=input('输入待转变的温度(允许输入数组):');
   if k==1
      tout=tin*9/5+32;        % 摄氏转换为华氏
      k1=2;
   elseif k==2
      tout=(tin-32)*5/9;       % 华氏转换为摄氏
      k1=1;
   end
   str=[' degC';' degF'];
   disp(['转换前的温度', '    ', '转换后的温度'])
   disp(['   ',num2str(tin),str(k,:), '          ', num2str(tout),str(k1,:)])

 

结果:

选择转换方式(1--摄氏转换为华氏,2--华氏转换为摄氏):2
输入待转变的温度(允许输入数组):99
转换前的温度    转换后的温度
   99 degF          37.2222 degC

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有