2015-02-09 5 views
0

Я пытаюсь перевести некоторый код Matlab в Python. К сожалению, у меня нет Matlab, поэтому я не могу попробовать синтаксис.если синтаксис оператора Matlab

Я путаюсь, если заявление ниже

for i = 1:200 
    if mod(i,10) == 0 
     i 
    end 

для цикла, то продолжает вычислять некоторые значения, которые зависят от г. Что делает оператор if?

Могу ли я спросить, в чем разница между разреженной матрицей и один из с нулями, например

A = sparse(n,m) 
B = zeros(n,m) 

Спасибо!

+0

Для будущего реф, если вы не можете получить лицензию MATLAB, или для быстрого взлома, вы можете попробовать октаву, бесплатный клон. –

ответ

1

Это, как правило, лучше создать раздельные вопросы, но я попытаюсь рассмотреть как:

1)mod функции performes операции по модулю, то есть остаток после деления. mod(i,10) == 0 будет 1, если число делится на 10 и 0 в противном случае. Поэтому оператор if будет выполняться, когда число i кратно 10.

Поскольку нет else, ничего не происходит, если условие не соответствует действительности.

Просто написав i (без точки с запятой), текущее значение i будет напечатано в окне команд. Результатом вашего примера кода будет 10, 20, ..., 200.

2) Команда zeros создает «нормальную» матрицу (конечно) нулей размерности n x m. MATLAB также имеет специальный sparse memory organization. Поскольку разреженные матрицы состоят в основном из нулей, вам не нужно заполнять память всеми этими нулями, но вы можете сохранить ненулевые значения и где они есть. Это делается автоматически с помощью функции sparse. Чтобы преобразовать разреженную матрицу в «нормальный» формат, вы можете использовать функцию full.

1

Заявление if проверяет, является ли modulus (остаток после деления) i деленным на 10 равен 0 или нет.

Когда он оценивается как true, он печатает номер i в окне команд.

+0

Спасибо, означает ли это, что остальная часть цикла for работает только в том случае, если i делится на 10?Реальная часть, которую я не понимал, это то, что делает i в операциях if, и что происходит, когда оператор if не является истинным. –

+0

Если инструкция 'if' неверна, ничего не происходит. Если утверждение 'if' истинно, строка под оператором' if' выполняется до перехода к следующему номеру в цикле 'for'. – HavelTheGreat

+0

Но в этой ситуации все выполняемые операторы if являются «i», которые уже определены из счетчика циклов. Я не понимаю, какая разница в выражении if, истинна или ложна. Это кто-то другой код, который я пытаюсь понять. –

0

См. documentation for mod. mod(i,10) возвращает остаток после деления i на 10, где i является дивидендом, а 10 является дивидентом. Оператор if проверяет, равен ли этот остаток 0 или нет.

1

Наивный перевод Python будет

for i in range(1, 201): 
    if not i % 10: 
     print(i) 

, но мы можем сохранить некоторую работу, указав значение шага,

for i in range(10, 201, 10): 
    print(i) 
Смежные вопросы