MATLAB中的for循环语句与if判断语句的使用

利用MATLAB的if语句与for语句求解公式:

 公式中总计有53个量,如果利用人工计算,虽可解,但其计算量巨大。所以在一直各个值(即公式中等号右边的各个x量)的情况下,希望能够使用MATLAB语句,进行等式左边的求解。

 下面是MATLAB的学习,最后将附上上述公式的求解代码。

一、if 语句(判断语句)

1. 在MATLAB中与C语言中不同的是,if语句的结束语句是end,而不是{};

2. if语句中如果有else if 或者else时,其语句形式为:

if expression1

        statements1

elseif expression2

        statements2

else expression3

        statement3

end

其中,

expression参数为MATLAB表达式,通常由一些变量或者联合相关操作的更小表达式(例如:array==0)或逻辑函数(例如lisreal(A)组成。

statement参数是一条或者多条仅仅当expression为true或者非零时而执行的MATLAB语句。

示例:

 将TM0.mat文件(上图)中的第一行第一列的值通过以下的MATLAB语句进行转化:

load("TM0.mat")         %加载文件夹中的TM0.mat文件
if(TM0(1,1)<1)          
    TM0(1,1) = 1;       %若TM0.mat文件中的第一行第一列的值小于1,则将1赋值给TM0.mat文件中的第一行第一列
elseif(TM0(1,1)<1e-15)
    TM0(1,1) = 0;       %若TM0.mat文件中的第一行第一列的值小于1e-15,则将0赋值给TM0.mat文件中的第一行第一列
else(TM0(1,1)>1)
    TM0(1,1) = -1;      %若TM0.mat文件中的第一行第一列的值大于1,则将-1赋值给TM0.mat文件中的第一行第一列
end

运行以上代码,便将TM0.mat文件中的第一行第一列的值换为1或0或-1。

运行后,TM0.mat的结果如下:

二、for语句(循环语句)

其实for语句或while语句在高中数学中就已经学过其循环结构,在大学的C语言中也会有加强练习,现在运用到MATLAB中也比较简单,只要掌握其基本的逻辑语句即可,在举一反三进行多次使用。

for语句的格式为:

for 循环变量=初始值:步长:最终值
    循环体语句
end

 for循环的值有三种形式:

格式描述
初始值:最终值将索引变量从初始到终值递增1,并重复执行程序语句,直到索引值大于终值。
初始值:步长:初始值按每次迭代中的值步骤递增索引, 或在步骤为负值时递减。
valArray在每个迭代 valArrayon 数组的后续列中创建列向量索引。例如, 在第一次迭代中, index = valArray (:, 1),循环执行最大 n 次, 其中 n 是 valArray 的列数,由 numel (valArray, 1,:) 给出。输入 valArray 可以是任何 MATLAB 数据类型, 包括字符串、单元格数组或结构。

示例:

1.第二中格式示例:

在MATLAB中输入一下语句:

for a = 10:1:20
   fprintf('the value of a : %d ',a);
end

其运行结果为:

the value of a : 10     the value of a : 11
the value of a : 12     the value of a : 13 
the value of a : 14     the value of a : 15 
the value of a : 16     the value of a : 17 
the value of a : 18     the value of a : 19 
the value of a : 20

2. 第三种格式示例:

在MATLAB中输入一下语句:

for A = [1,2,3,4;5,6,7,8;9,10,11,12]
    disp(A);
end

 其运行结果为:

  1
     5
     9

     2
     6
    10

     3
     7
    11

     4
     8
    12

 以上便为if语句与for语句的基本学习,若要熟练运用,还需多加练习。下面就是对if语句和for语句的联合使用。

三、if语句与for语句的嵌套

a = 0;
for i=1:4
    if i<=3
        a = a+2;
    end
end

由代码所示,for语句中嵌套if判断语句,表示在i<=3时,a进行2的累加;当i>3时,a不进行任何操作,知道循环结束。

四、解题

根据对if语句与for语句的简单学习,现在通过编写MATLAB代码对前面的公式进行求解。

load("TM0.mat")         %加载文件夹中的TM0.mat文件
for i = (1:18)
    x(i) = TM0(21,i+1);              
    x_TMEH(i) = TM0(21,20);              
    x_EH(i) = TM0(20,i+1);            
    x_j(1,i) = 0;
    if (i<=4)
         x_im(i) = TM0(3,2);          
    elseif (i>=5 & i<=8)
        x_im(i) = TM0(14,6);
    elseif (i>=9 & i<=12)
        x_im(i) = 2 * TM0(16,10) + TM0(11,10) ;
    elseif (i>=13 & i<=14)
        x_im(i) = 2 * TM0(14,6) ;
    elseif (i>=15 & i<=18)
        x_im(i) = 2 * TM0(16,10) + TM0(17,16) ;
    end
for j = (1:18)                  
    if (j+1 ~= i+1)
        x_j(1,i) = x_j(1,i)+ TM0(21,j+1);
    else 
         x_j(1,i) = x_j(1,i) + 0;
    end
end
x_measure(1,i) = x(i) + ( x_TMEH(i) + x_j(1,i) ) .* (x_EH(i) + x_im(i)) ./ ( x_TMEH(i) + x_j(1,i) + x_EH(i) + x_im(i)) ;
end

经过半天的调试,终于求解出来了。一定要注意if和for语句的嵌套,同时要根据公式求解需求,给定if的条件。

  • 17
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值