利用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语句进行转化:
1
2
3
4
5
6
7
8
9load("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中输入一下语句:
1
2
3for a = 10:1:20 fprintf('the value of a : %d ',a); end
其运行结果为:
1
2
3
4
5
6the 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中输入一下语句:
1
2
3for A = [1,2,3,4;5,6,7,8;9,10,11,12] disp(A); end
其运行结果为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
151 5 9 2 6 10 3 7 11 4 8 12
以上便为if语句与for语句的基本学习,若要熟练运用,还需多加练习。下面就是对if语句和for语句的联合使用。
三、if语句与for语句的嵌套
1
2
3
4
5
6a = 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代码对前面的公式进行求解。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27load("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的条件。
最后
以上就是英俊钥匙最近收集整理的关于MATLAB中的for循环语句与if判断语句的使用一、if 语句(判断语句)二、for语句(循环语句)三、if语句与for语句的嵌套四、解题的全部内容,更多相关MATLAB中的for循环语句与if判断语句的使用一、if内容请搜索靠谱客的其他文章。
发表评论 取消回复