если, elseif, еще

Выполните операторы, если условие верно

Синтаксис

if expression
    statements
elseif expression
    statements
else
    statements
end

Описание

пример

if expression, statements, end выполняет выражение и выполняет группу операторов, когда выражение верно. Выражение верно, когда его результат непуст и содержит только ненулевые элементы (логический или действительный числовой). В противном случае выражение является ложным.

elseif и блоки else являются дополнительными. Операторы выполняются, только если предыдущие выражения в блоке if...end являются ложными. Блок if может включать несколько блоков elseif.

Примеры

свернуть все

Создайте матрицу 1 с.

nrows = 4;
ncols = 6;
A = ones(nrows,ncols);

Цикл через матрицу и присвоение каждый элемент новое значение. Еще присвойте 2 на основной диагонали, -1 на смежных диагоналях и 0 везде.

for c = 1:ncols
    for r = 1:nrows
        
        if r == c
            A(r,c) = 2;
        elseif abs(r-c) == 1
            A(r,c) = -1;
        else
            A(r,c) = 0;
        end
        
    end
end
A
A = 4×6

     2    -1     0     0     0     0
    -1     2    -1     0     0     0
     0    -1     2    -1     0     0
     0     0    -1     2    -1     0

Выражения, которые включают операторы отношения на массивах, таких как A > 0, верны только, когда каждый элемент в результате является ненулевым.

Протестируйте, если какими-либо результатами является истинное использование функции any.

limit = 0.75;
A = rand(10,1)
A = 10×1

    0.8147
    0.9058
    0.1270
    0.9134
    0.6324
    0.0975
    0.2785
    0.5469
    0.9575
    0.9649

if any(A > limit)
    disp('There is at least one value above the limit.')
else
    disp('All values are below the limit.')
end
There is at least one value above the limit.

Сравните массивы с помощью isequal, а не оператора ==, чтобы протестировать на равенство, потому что == приводит к ошибке, когда массивы являются различными размерами.

Создайте два массива.

A = ones(2,3);
B = rand(3,4,5);

Если size(A) и size(B) являются тем же самым, конкатенируют массивы; в противном случае выведите предупреждение и возвратите пустой массив.

if isequal(size(A),size(B))
   C = [A; B];
else
   disp('A and B are not the same size.')
   C = [];
end
A and B are not the same size.

Используйте strcmp, чтобы сравнить векторы символов. Используя ==, чтобы протестировать на равенство приводит к ошибке, когда векторы символов являются различными размерами.

reply = input('Would you like to see an echo? (y/n): ','s');
if strcmp(reply,'y')
  disp(reply)
end

Определите, находится ли значение в пределах заданной области значений.

x = 10;
minVal = 2;
maxVal = 6;

if (x >= minVal) && (x <= maxVal)
    disp('Value within specified range.')
elseif (x > maxVal)
    disp('Value exceeds maximum value.')
else
    disp('Value is below minimum value.')
end
Value exceeds maximum value.

Больше о

свернуть все

Выражение

Выражение может включать операторы отношения (такие как < или ==) и логические операторы (такие как &&, || или ~). Используйте логические операторы and и or, чтобы создать составные выражения. MATLAB® выполняет составные выражения слева направо, придерживаясь правил приоритета оператора.

В условном выражении блока if...end логические операторы & и | ведут себя как операторы короткой схемы. Это поведение совпадает с && и ||, соответственно. Начиная с && и || последовательно короткая схема в условных выражениях и операторах, это - хорошая практика, чтобы использовать && и || вместо & и | в рамках выражения. Например,

x = 42;
if exist('myfunction.m','file') && (myfunction(x) >= pi)
    disp('Expressions are true')
end

Первая часть выражения оценивает ко лжи. Поэтому MATLAB не должен оценивать вторую часть выражения, которое привело бы к неопределенной функциональной ошибке.

Советы

  • Можно вложить любое количество операторов if. Каждый оператор if требует ключевого слова end.

  • Постарайтесь не добавлять пробел после else в ключевом слове elseif (else if). Пробел создает вложенный оператор if, который требует его собственного ключевого слова end.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Представлено до R2006a