Перейти к содержанию
    

Большое время выполнения функции

Всем доброго дня!
Столкнулся с тем что следующая строчка выполняется 20 секунд!

sig = double(sym(ArrayData));

Размер ArrayData - 12288 ячеек
Изображение

Это нормально или я что-то делаю не так? 
Может есть альтернативный приемлемый вариант преобразования?

Изменено пользователем Rst7
Очистил форматирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 минут назад, _sda сказал:

Всем доброго дня!
Столкнулся с тем что следующая строчка выполняется 20 секунд!


sig = double(sym(ArrayData));

Размер ArrayData - 12288 ячеек
Изображение

Это нормально или я что-то делаю не так? 
Может есть альтернативный приемлемый вариант преобразования?

Это нормально, только может быть проще сделать вот так: cell2mat(ArrayData)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Не работает, однако.

image.png.bc6fd31e0974d961c410f6c47867386a.png

А как же согласовать эти размеры матриц?

ArrayData формируется так:

in = fscanf(fid, '%c',inf); fclose(fid);
m = cellstr(in); 
m(cellfun(@isempty,m)) = {' '}; 
af = cell2mat(m.');
ArrayData = regexp(af,'([0-9-])+','match')';

Может это всё можно по другому сделать?Скрипт писал лет 10 назад, сейчас уже не помню ничего...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда вот так: sig = str2num(char(string(ArrayData)));

Или, если пропустить regexp(...), то сразу sig = str2num(af)

Не мгновенно, но вроде быстрее.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 17.08.2019 в 20:04, Самурай сказал:

Тогда вот так: sig = str2num(char(string(ArrayData)));

Или, если пропустить regexp(...), то сразу sig = str2num(af)

Не мгновенно, но вроде быстрее.

Спасибо огромное! Только не "вроде быстрее", а раз в 20 быстрее...:drinks:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Коллега, а не сможете ли помочь ещё в одном месте?

Как можно выйти из цикла по нажатию клавиши? Обычная пара Ctrl+C не годится, в цикле есть функция которая всегда должна быть выполнена полностью. И только после этой функции можно выходить из цикла.

Пробовал функцию onCleanup, как советуют в сети , но не вышло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо огромное! Как то не догадался посмотреть на сайте...

Особенно понравилась третья ссылка в списке! :dance3:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...