Jump to content

    

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

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

sig = double(sym(ArrayData));

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

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

Edited by Rst7
Очистил форматирование

Share this post


Link to post
Share on other sites
25 минут назад, _sda сказал:

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


sig = double(sym(ArrayData));

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

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

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

Share this post


Link to post
Share on other sites

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

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 назад, сейчас уже не помню ничего...

Share this post


Link to post
Share on other sites

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

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

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

 

 

Share this post


Link to post
Share on other sites
В 17.08.2019 в 20:04, Самурай сказал:

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this