MATLAB учебник для программистов [закрыто]

Поместите функцию в поток и дождитесь окончания потока.

Нити Python не могут быть прерваны, кроме как с помощью специального C api.

import time
from threading import Thread

def noInterrupt():
    for i in xrange(4):
        print i
        time.sleep(1)

a = Thread(target=noInterrupt)
a.start()
a.join()
print "done"


0
1
2
3
Traceback (most recent call last):
  File "C:\Users\Admin\Desktop\test.py", line 11, in <module>
    a.join()
  File "C:\Python26\lib\threading.py", line 634, in join
    self.__block.wait()
  File "C:\Python26\lib\threading.py", line 237, in wait
    waiter.acquire()
KeyboardInterrupt

Посмотрите, как прерывание было отложено до тех пор, пока поток не закончится?

Здесь он адаптирован к вашему использованию:

import time
from threading import Thread

def noInterrupt(path, obj):
    try:
        file = open(path, 'w')
        dump(obj, file)
    finally:
        file.close()

a = Thread(target=noInterrupt, args=(path,obj))
a.start()
a.join()
23
задан Shai 12 June 2013 в 10:16
поделиться

5 ответов

Достаточно отрывочных комментариев, вот и ответ:

  1. Рабочий стол Matlab: для чего нужны все окна, перетаскивание кода из истории обратно в окно команд, инспектор переменных и т. д.
  2. Построение: не только команда построения графика, но и способы использования инструментов графического интерфейса пользователя и способы создания M-файла из графики.
  3. M-файлы для скриптов и функций, а также основные различия между ними.
  4. M-Lint, профилировщик.
  5. Используйте Matlab как средство обучения опасностям и подводным камням арифметики с плавающей запятой.
  6. Получение справки: из командной строки, в Интернете, в документации, при обмене файлами, ...
  7. Задайте путь и текущий рабочий каталог.
  8. Импорт данных из файлов, экспорт данных в файлы, загрузка и сохранение.

Этого должно хватить, чтобы занять их около часа.

Чтобы прояснить, я предлагаю эти темы, чтобы помочь вам научить своих студентов избегать распространенных ошибок Matlab, включая:

  1. Непродуктивное использование инструмента, повторный ввод команд, которые можно легко вызвать из истории, используя стиль C (или Java) команды чтения файлов вместо uuimport, медленно набирая сценарии для рисования графики, когда Matlab может сделать это за вас, гадая, что означают все маленькие оранжевые линии в правом поле редактора и волнистые подчеркивания, пытаясь разобраться во всем для себя, когда средства справки мог бы сказать им, множество других вещей, на изучение которых многие гораздо более опытные пользователи Matlab потратили годы.
  2. Арифметика с плавающей запятой не является реальной.
  3. и, вероятно, многое другое.
15
ответ дан 29 November 2019 в 01:22
поделиться

Я согласен с предыдущими ответами, но я бы сказал, что индексирование - это первая и самая важная и сложная концепция в изучении MATLAB. Я видел, как многие программисты на C, начинавшие с MATLAB, просто писали циклы, множество циклов, что-то нелепое вроде

for i=1:10
    a(i)=i;
end

вместо простого a = 1: 10; .

Я бы посоветовал им прочитать о концепциях матричного программирования:

  • Как создавать простые векторы и матрицы
  • Какие переменные можно использовать для индексации
  • Как создавать и применять индексы
  • Логические операции и функции, логические и числовые индексы (функция поиска)
  • Индексирование правой и левой части выражения
  • Разница между индексированием числовых матриц и массивов ячеек
  • Как использовать индексы в качестве выходных данных из различных функций, таких как сортировка, уникальность, ismember и т. д.
  • Вы не можете применять индексы к промежуточным результатам

Что касается производительности, я бы добавил, что знание того, как использовать режим ячейки редактора, очень полезно.

17
ответ дан 29 November 2019 в 01:22
поделиться

MATLAB концептуально в некотором смысле сильно отличается от других языков, о которых вы упомянули:

  • ячеек используются, где Java использует восходящее преобразование
  • глобальные и постоянные переменные являются статическими ] в Java
  • gui обрабатывает просто числа типа double
  • вложенные функции замыкания , ни Java, ни C / C ++ не имеют такой возможности
  • редко используются private и папки @TYPE для определения области видимости
  • приемы обработки массивов
  • очень простое взаимодействие с Java / COM / .Net с использованием синтаксиса MATLAB
  • аргументы переменной функции , обработка аргументов функции с помощью varargin / varargout
  • память управление
5
ответ дан 29 November 2019 в 01:22
поделиться

Что касается неожиданных или неинтуитивных функций MATLAB, которые могут вызвать у них путаницу, в этом вопросе есть несколько хороших указателей:

Относительно прохладной экономии времени / эффективности Уловки, у этого другого вопроса есть несколько хороших примеров:

И для нескольких потенциально более сложных тем вы можете обратиться к ответам на этот вопрос:

Теперь о моих 0,02 доллара. Основываясь на типах вопросов, которые я видел наиболее часто задаваемыми по SO, я бы сказал, что вы захотите убедиться, что они хорошо понимают следующие концепции:

А вот некоторые полезные функции, которые уже реализованы в MATLAB, которые могут сэкономить им время и усилия:

8
ответ дан 29 November 2019 в 01:22
поделиться

Для тех, кто пришел из языков C-семейства, поэлементные операторы являются новыми. Мне потребовалось несколько месяцев, чтобы обнаружить операторы ./ и . * . До этого я писал для циклов для поэлементных операций. Так что, возможно, на это следует указать.

10
ответ дан 29 November 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: