博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
M文件程序设计(matlab)
阅读量:4181 次
发布时间:2019-05-26

本文共 6755 字,大约阅读时间需要 22 分钟。

Contents

clc;clear all;

第二章 M文件程序设计

M文件

f2c.m

一,程序控制结构

1.顺序结构

1)数据的输入input

% x = input('whats your name ', 's')

2)数据的输出disp 输出字符串或者矩阵

% A = 'Hello ,Tom' ;% disp(A)%% a = [1 2 3;4 5 6 ; 7 8 9 ] ;% disp(a)%% % 输入x,y的值,并将他们的值置换后输出% x = input('请输入x矩阵');% y = input('请输入y矩阵');% z = x;% x = y;% y = z;% disp(x);% disp(y);

3)程序的暂停 pause Ctrl+C 延迟的秒数.

%  pause(2)

2.选择结构

1)IF语句

% 单分支语句%  x = 0.6%   if fix(x) == x%       disp(x)%   end  % 双分支if语句%   P = input('请输入P的值');%   if P>5%       A = zeros(1,10)%   else%       A = ones(1,10)%   end  % 多分支if语句%   disp('解方程ax^2+bx+c=0,请输入参数')%   a = input('a=');%   b = input('b=');%   c = input('c=');%   derta = b*b -4*a*c;%   x = [((-b+sqrt(derta))/(2*a)),(-b-sqrt(derta))/(2*a)];%  disp(['方程',num2str(a),'x^2+',num2str(b),'x+',num2str(c),'=0的根为:']);%  disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);

2)switch 语句 | 结构体 | 结构体元素引用 | 空格blanks(n) | num2str 数字转换为字符串.

%  switch 表达式%      case 表达式1%          语句组1%      case 表达式2%          语句组2%          ...%      otherwise%      语句组n%  end% 用switch结构来实现学生成绩管理% switch里的case的表达式可以是数字,矩阵,字符串.% matlab中的的结构体的组成.% 结构体的元素的引用.%clear;for i=1:10;    a{i} = 89+i;    b{i} = 79+i;    c{i} = 69+i;    d{i} = 59+i;end;% a = [90]    [91]    [92]    [93]    [94]    [95]    [96]    [97]    [98]    [99]%% b =  [80]    [81]    [82]    [83]    [84]    [85]    [86]    [87]    [88]    [89]%% c =  [70]    [71]    [72]    [73]    [74]    [75]    [76]    [77]    [78]    [79]%% d =  [60]    [61]    [62]    [63]    [64]    [65]    [66]    [67]    [68]    [69]c = [d,c];% c =    [60]    [61]    [62]    [63]    [64]    [65]    [66]    [67]    [68]    [69]    [70]    [71]    [72]  [73]    [74]    [75]    [76]    [77]    [78]    [79]Name = {
'Jack','Marry','Peter','Rose','Tom'};Mark = { 72 83 56 94 100 };Rank =cell(1,5); %生成一维矩阵 为空: Rank = [] [] [] [] []S = struct('Name',Name,'Marks',Mark,'Rank',Rank);for i = 1:5 switch S(i).Marks case 100 S(i).Rank = '满分'; case a S(i).Rank = '优秀'; case b S(i).Rank = '良好'; case c S(i).Rank = '及格'; otherwise S(i).Rank = '不及格'; endenddisp(['学生姓名 ',' 得分 ',' 等级 ']);disp('')for i=1:5; disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]);end
学生姓名  得分   等级 Jack      72      及格Marry      83      良好Peter      56      不及格Rose      94      优秀Tom      100      满分

3)try语句

%   try%       语句组1%   catch%       语句组2%   end% A = [1 2 3;4 5 6];% B = [7 8 9;10 11 12];% try%     C1 = A*B% catch%     C2 = A.*B% end% lasterr             %Last error message

3.循环结构

1)for语句

% for 循环变量 = 表达式1:表达式2:表达式3%     循环体语句% end%  for 循环变量 =矩阵表达式%      循环体语句%  end% %输出1个3位数,各位数的立方和等于该数本身.% for m = 100:1:999%     m1 = fix(m/100);            % 求m的百位数字%     m2 = rem(fix(m/10),10);     % 求m的十位数字%     m3 = rem(m,10);             % 求m的个位数字%     if m == m1*m1*m1 + m2*m2*m2 + m3*m3*m3%         disp(m)%     end% end% 已知y=1+1/2^2+...+1/n^2 ,当n为100时,求y的值.% y = 0;% n = input('输入n的值,求y:');% for i = 1:n%     y = y+1/i/i ;% end% disp(['当n为',num2str(n),'时,y=',num2str(y)])% n=200;% i = 1:n^2;% y = sum(1./i)% 求矩阵各行元素之和% s = 0;% a = [12 13 14; 15 16 17; 18 19 20;21 22 23]% for k = a%     s = s+k;% end% disp(s);

2)while语句

% while(条件)%     循环体语句% end% 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和.% sum = 0;% count = 0;% val = input('输入一个数,(以0结束输入)');% while (val ~= 0)%     sum = sum + val;%     count = count + 1;%     val = input('输入一个数,(以0结束输入)');% end% if (count>0)%     disp([blanks(6),'总和为',num2str(sum)]);%     disp([blanks(6),'平均值为',num2str(sum/count)]);% end

3)break语句和continue语句

% continue语句控制跳过循环体的某些语句.% break 语句跳过当前循环体.% a = 3;b = 6;%     for i = 1:3%         b = b+1%         if i<2                %当if条件满足时,程序不再执行continue后面的语句,而是开始下一次的循环.%             continue          %continue语句常用于循环体中,与if语句一起使用.%         end%         a = a+2%     end% a = 3;b = 6;%     for i = 1:3%         b = b+1%         if i>2                % 当if条件不满足时,程序执行a = a +2;%             break             % 当if条件满足时,程序执行循环体,跳出循环体.%         end%         a = a+2%     end

4)循环的嵌套

% 若一个数等于它的各个真因子之和,则称之为完数.如6 = 1+2+3;所以6是完数.求[1,500]之间的完数.% 求某个数的因子,然后累加,比较后输出.% for m = 1:500%     s = 0;%     for k = 1:m/2%         if rem(m,k) == 0%             s = s+k;%         end%     end%         if m == s%             disp(m);%         end% end

二,函数文件

1)函数文件的基本结构

编写函数文件求半径为r的圆的面积和周长. [s,p] = fcircle(10)

[s,p] = fcircle(10)
s =  314.1593p =   62.8319

2)函数调用

% 利用函数文件,实现指教坐标(x,y)和极坐标(\rho,\theta)%函数fcircle.m% x = input ('输入直角坐标x:');% y = input ('输入直角坐标y:');% [rho,theta] = tran(x,y);% disp(['{\rho} = ',num2str(rho)]);% disp(['{\theta} = ',num2str(theta)]);% 利用函数的递归调用,求n!% % 函数factor.m% s = 0;% for i = 1:5%     s = s + factor(i);% end% s% % 函数factor.m调用% s = 0;% n = input ('请输入n,以求n的阶乘.n=');% for i = 1:n%     s = s + factor(i);% end% disp([num2str(n),'!=',num2str(s)])

3)全局变量和局部变量

% 全局变量示例% % 函数wadd.m%  global alpha beta%  alpha = 1;%  beta = 2;%  s = wadd(1,2)

三.案例分析

% % 用筛选法求某自然数范围内的全体素数.%  m = input('m=');%  p = 1:m;%  p(1) = 0;%  for i = 2:sqrt(m)%      for j = 2*i:i:m%          p(j) = 0%      end%  end%  n  = find(p~=0)%  p(n)%% m = input('m=');% p =2:m ;% for i = 2:sqrt(m)%     n = find(rem(p,i) == 0 & p ~= i); %如果p对i取余为0,并且p不等于i%     p (n) = [];% end% p% % 设f(x) = exp(0.5x)*sin(x+pi/6) ,求s = [0,3*pi]f(x)dx.% %----------------------------------------------------% a = 0;% b = 3*pi;% n = 10000;% h = (b-a)/n;% x =a; s = 0;% f0 = exp(-0.5*x)*sin(x+pi/6);% for i=1:n%     x = x +h;%     f1 = exp(-0.5*x)*sin(x+pi/6);    %更新f1%     s = s +(f0+f1)*h/2;              %求小矩阵的值.累加.%     f0=f1;                           %更新f0% end% s% %----------------------------------------------------% a = 0;% b = 3*pi;% n =1000;% h = (b-a)/n;% x = a:h:b;% f = exp(-0.5*x).*sin(x+pi/6);       %求图形上的各点.% for i =1:n%     s(i) = (f(i)+f(i+1))*h/2;       %求小梯形的面积.% end% s = sum (s)                         %累加求积分值.% %----------------------------------------------------% % 斐波拉契数列% n = input('求斐波拉契数列的第n项,n=');% resultFFIB = ffib(n)

f2c.m

clc; 
clear; 
F= input('输入华氏温度F:'); 
C = 5*(F-32)/9; 
disp('华氏温度F为') 
disp(F) 
disp('转换为摄氏温度C是') 
disp(C)

factor.m

function f = factor(n) 
if n<=1 
    f = 1; 
else 
    f = factor(n-1)*n; 
end


fcircle.m

function [s,p] = fcircle(r)

% CIRCLE calculate the zrea and perimeter of a circle of radir r 
% r 圆半径 
% s 圆面积 
% p 圆周长 
s = pi*r*r; 
p = 2*pi*r;

% lookfor perimeter 
% fcircle                        - CIRCLE calculate the zrea and perimeter of a circle of radir r

ffib.m

function f =ffib(n) 
if n >2 
    f = ffib(n-1) + ffib(n-2); 
else 
    f =1; 
end

tran.m

%% tran.m 
function [rho,theta] = tran(x,y)

rho = sqrt (x*x+y*y); 
theta = atan (y/x); 
wadd.m

function f = wadd(x,y) 
global alpha beta 
f = alpha*x+beta*y; 
F:\matlab\work\TongXingYuanLi\Chapter2\type>

转载地址:http://llzoi.baihongyu.com/

你可能感兴趣的文章
openstack juno 配置vmware(vcenter、vsphere)
查看>>
远程debug调试(eclipse)之openstack windows
查看>>
PAAS平台对比:OpenShift VS CloudFoundry【51CTO调研报告】
查看>>
JAX-RS(java restful实现讲解)(转)
查看>>
Spring MVC与JAX-RS比较与分析
查看>>
openstack官方docker介绍
查看>>
horizon开发环境搭建及keystone使用总结
查看>>
Google Guice使用入门(转)
查看>>
Google Guava官方教程(中文版)(转)
查看>>
【java开发系列】—— 自定义注解(转)
查看>>
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)
查看>>
ESB简介及选型(转)
查看>>
JAVA编写HTTP代码并发布在网上
查看>>
JDBC连接数据库的原理和步骤
查看>>
开发微信公众平台的基本功能
查看>>
JSP内置对象的学习
查看>>
用java写文件输入输出流,实现复制粘贴的方法
查看>>
学习JSP的方法步骤(参考)
查看>>
JSP中常见TOMCAT错误代码原因
查看>>
MyEclipse中WEB项目加载mysql驱动方法
查看>>