以前在脚本中程序是按照顺序来执行的,限制性第一行,再执行第二行…
但有时想要根据不同的情况执行不同的语句这就要用到判断语句if了.

if语句的表达形式相当于:如果…那么…
表达形式为:

if condition    %condition就相当于执行一个动作的条件,
                输出的结果其实是逻辑判断 true 1或者false 0,
                以此来选择是否执行action

   action       %如果condition是true 1,则action将会被执行,
                如果condition是false 0,则直接跳到end


end

如:输入一个数,如果它小于零,则让该值变成绝对值

num=-4
if num < 0
   num = abs(num)
end

matlab自带的iforest函数_matlab


如:输入一个数,如果它小于零,则让该值变成绝对值

num=input('请输入一个数: ');
   fprintf('%f 的绝对值是 %f\n',num,abs(num)')
num=input('请输入一个数: ');
abs_num = abs(num)
   fprintf('%f 的绝对值是 %f\n',num,abs_num')
num=input('请输入一个数: ');
if num < 0
abs_num = abs(num)
end
disp('ok,我们取该负数的绝对值')
   fprintf('%f 的绝对值是 %f\n',num,abs_num')

检测一个数是否是大于100的,如果是大于100的话输出:该数超出100了

num = input('please input a number: ');
if num > 100 ;
disp('这个数超出100了')
end

输入两个数a和b,检测如果a<b则输出a,a+1,a+2,a+3…b;
如果 a > b则输出b,b+1,b+2,b+3…a;
如果 a = b则输出1

a = input('please input a number a:');
b = input('please input a number b:');
if a < b 
   v = a:b
end 
if a > b 
   v = b:a
end 
if a == b 
   v = 1
end

matlab自带的iforest函数_matlab_02

matlab自带的iforest函数_开发语言_03


matlab自带的iforest函数_自动回复_04

%建立一个脚本
function v = seq(a,b)
if a < b 
   v = a:b
end 
if a > b 
   v = b:a
end 
if a == b 
   v = 1
end 
% 然后在命令行窗口里输入seq(number1,number2)即可调用该脚本

matlab自带的iforest函数_matlab自带的iforest函数_05


matlab自带的iforest函数_matlab自带的iforest函数_06


matlab自带的iforest函数_matlab_07


输入两个数a和b,从两个数中最小的,每次加1,一直到两数中最大的。

%建立一个新的seq_2的脚本

function v = seq(a,b)
min(a,b):max(a,b)
end

matlab自带的iforest函数_开发语言_08


创建一个自动回复脚本,如果输入的是Y,则输出positive command received。如果输入的是N,则输出negative command received。

%在脚本里创建AutoReply
function AutoReply
Reply = input('please input a Reply N/Y: ','s') %使用input语句时matlab期望输入的是一个数字,如果是个字符的话需要告诉matlab,因而要加上's'即是.
if Reply == 'N'  %在if之后需要紧跟condition,不能空到下一行
    disp('Positive command received')
end
if Reply == 'Y'
    disp('Negatave command received')
end

end

上一个自动回复脚本中,只能输入N和Y,如果想让其识别大小写,则在condition里加一个“或”即可,但是不能为if Reply == ‘N’ || ‘n’

function AutoReply
Reply = input('please input a Reply N/Y: ','s')
if Reply == 'N'|| Reply =='n'
    disp('Positive command received')
end
if Reply == 'Y'|| Reply =='y'
    disp('Negatave command received')
end

end

不能为if Reply == ‘N’ || 'n’的原因是:

因为matlab是按顺序从左到右依次处理的,if是按照logical处理的,而logical里的所有字符都会输出true1。因而相当于是直接执行action.

具体可看如下:无论a取多少是不是1或2,logical(a=1||2)输出都是true1。

其实语句的意思应该是a等于1或a等于2,而不是a等于1或2.

matlab自带的iforest函数_if语句_09