MATLAB程序结构

%% 顺序结构程序
% 数据的输入
% 输入某一值:在命令行窗口中输入“ input('请输入某一值:\n')”,按回车键
% 输入某一矩阵:在命令行窗口中输入“ input('请输入某一矩阵:\n')”,按回车键
% 输入某一字符串:在命令行窗口中输入“ input('请输入某一字符串:\n','s')”,按回车键
A = ('请输入变量A的值:')
% 数据的输出
s = 'Hello world!'
disp(s)

% 程序的暂停
pause(30)  % 延迟30秒

% 求线段AB的长度A(1,1);B(4.5,4.5), 并求出线段的黄金分割点
% 可以将A和B的坐标转化为复数,直接求复数的模
a = input('a='); % 这里输入1+i
b = input('b='); % 这里输入4.5+4.5i
s = abs(a-b); % 求复数的模
c = a+((sqrt(5)-1)/2)*(b-a);
disp(s)
disp(c)

%% 用if语句实现选择结构
% 当条件结果为标量时,非零表示条件成立,零表示条件不成立。
% 当条件结果为矩阵时,如果矩阵为非空,且不包含零元素,则条件成立,否则不成立。
% 例如,[1,2;0,4]表示条件时,条件不成立;[1,2;3,4]表示条件时,条件成立。

% 例1输入一个整数,若为奇数则输出其平方根,否则输出其立方根。
x=input('请输入x的值:');
if rem(x,2)==1
    y=sqrt(x);
else
    y=x^(1/3);
end
y

% 例2 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。
c=input('请输入一个字符:','s')
if c>='A'&& c<='Z'
    disp(lower(c))
    elseif c>='a'&& c<='z'
        disp(upper(c))
        elseif c>='O'&& c<='9'
            disp(str2double(c)^2)  % str2double(将字符串转化为数值)
else
    disp(c)
end

%% 用switch语句实现选择结构
% switch表达式应该是一个其值可以列举的表达式。
% case结果表为switch表达式的取值,当取值有多个时,用单元数据表示。
x = input('x = ?')
switch fix(x)
    case 2
        disp(111);
    case 2
        disp(222);
    case 3
        disp(333);
    case {4,5,6,7}
        disp(888);
    otherwise
        disp(999);
end

% 输入一个英文单词,判断它是否以元音字母开头。
c=input('请输入一个单词:','s');
switch c(1)
    case {'A','E','I','O','U','a','e','i','o ','u'}
            disp([c,'以元音字母开头']);
    otherwise
            disp([c,'以辅音字母开头']);
end

c=input('请输入一个单词:','s');
if findstr(c(1),'AEIOUaeiou')>0  % 利用findstr函数返回单词首字母在后面长字符串中的位置
    disp([c,'以元音字母开头']);
else
    disp([c,'以辅音字母开头']);
end

% 例2 PM2.5是指大气中直径小于或等于2.5微米的可入肺颗粒物,是衡量空气质量的重要指标。假定空气质量等级以PM2.5数值划分为6级。
%{
A = [1 2 3;4 5 6]; % 建立一个数值阵列 A
C = num2cell(A) % 将数值阵列 A 转成异质阵列 C
C =
[1] [2] [3]
[4] [5] [6]
%}
g = input('请输入PM2.5的值:')
switch fix(g)
    case num2cell(0:34)
        disp('空气质量优')
    case num2cell(35:74)
        disp('空气质量良好');
    case num2cell(75:114)
        disp('空气质量轻度污染');
    case num2cell(115:149)
        disp('空气质量中度污染');
    case num2cell(150:249)
        disp('空气质量重度污染');
    otherwise
        disp('空气质量严重污染');
end

%% for循环语句
% for语句针对向量的每一个元素执行一次循环体。
% 退出循环之后,循环变量的值就是向量中最后的元素值。
% 当向量为空时,循环体一次也不执行。
% 利用无穷级数展开式求pi的近似值。
y = 0;
g = -1;
n = input('n = ');
for i = 1:1:n
    g = -g;
    y = y+g*1/(2*i-1);
end
pai = 4*y
% 用向量求和的方法求解
n = input('n = ');
x = 1:2:(2*n-1);  % 构建向量x
y = (-1).^(2:n)./x; % 用点乘和点除的方法令向量各项相乘
pai = sum(y)/4

% 用定积分的方法确定pi的近似值。(用四分之一圆求定积分,确定其面积)
a = 0;
b = 1;  % 1/4单位圆是0到1
n = input('n = ');  % 将区间分为n份
h = (b-a)/n;  % 计算每个区间的宽度
x = a:h:b;    
f = sqrt(1-x.*x);
s = [];
for k = 1:n
    s1 = (f(k)+f(k+1))*h/2;  % 将f中第k个值和第k+1个值相加,相当于上底加下底 
    s = [s,s1];  % s1中的值导入矩阵s中
end
pai = 4*sum(s)

% 蒙特卡洛求pi的值(落点的概率)
gen = 1000;
count = 0;
r=1;
theta=0:pi/100:2*pi;
x=r*cos(theta);                              
y=r*sin(theta);                              
plot(x,y)
xlim([0,1])
ylim([0,1])
title('蒙特卡洛方法求pi值')
hold on
for i = 1:gen
    a = rand;
    b = rand;
    plot(a,b,'.')
    pause(0.00001)
    if a^2 + b^2 < 1
        count = count + 1;
    end
end
p = count/gen*4;
disp(['pi的估计值为',num2str(p)])

i =0;
for k=[1,2,3,4]  %是个行向量有四列执行四次
    i = i+1;
end
i
i =0;
for k=[1,2;3,4] %是个矩阵有两列执行两次
    i = i+1;
end
i

%% while循环语句
% while语句多用于循环次数不确定的情况,而对于循环次数确定的情况,使用for语句更方便。
% 例1从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。
musum=0;
n=0;
x=input('Enter a number (end in 0):');
while x~=0
    msum=msum+x;
    n=n+1;
    x=input('Enter a number (end in 0):');
end
if n>0
    musum
    mean=msum/n
end

% 利用筛选法求某范围内的全部素数
%{
1、先将1划掉(因为1不是素数也不是合数)。
2、用2去乘它后面的各个数,把能被2整除的数划掉,即把2的倍数划掉。
3、用3去除它后面的各数,把3的倍数划掉。
4、分别用5…各数作为除数去除这些数以后的各数。
%}
m = input('m=');
p = 1:m;
p(1) = 0;  % 表示1不是素数
for i = 2:sqrt(m)
    for j = 2*i:i:m
        p(j) = 0;
    end
end
n = find(p ~=0);
p(n)


%% break和continue语句
% break语句用来跳出循环体,结束整个循环。
% 求[100,200]之间第一个能被21整除的整数。
for n=100:200
    if rem(n,21)~=O
        continue
    end
    n
    break
end
% continue语句用来结束本次循环,接着进行下一次是否执行循环的判断。

%% 执行函数文件fcircle中的函数
[s,p]=fcircle(10)

% 匿名函数
f = @(x,y)x^2+y^2
f(3,4)

%% 执行函数文件fact中的递归函数
n = input('Please input n = ');
s = fact(n);
disp(s)

%% 函数参数的可调性
fout = test(2)
fout = test(2,3,2)

%% 全局变量
global A B
A  =1;
B = 2;
s = wad(1,2)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值