У меня есть сценарий, который печатает изображения в файл. Я хочу, чтобы имя файла, который я печатаю, был динамическим, то есть я хочу, чтобы имя выходного файла зависело от некоторых параметров. Вроде как это:Matlab: строки на самом деле не строки?
outputFileNames = {'1.0' '1.25' '1.75'};
%....some code to determine which outputFileName I should use
f=figure('visible','off');
%.....code to populate figure .....
fname = strcat('prefix', outputFileNames(index),'suffix');
print(f,'-dpsc2', '-append',fname)
Я получаю эту ошибку:
Error using LocalCheckHandles (line 81)
Handle input argument contains non-handle value(s).
Error in print>LocalCreatePrintJob (line 366)
handles = checkArgsForHandleToPrint(0, varargin{:});
Error in print (line 160)
[pj, inputargs] = LocalCreatePrintJob(varargin{:});
Error in GenerateFieldPlots (line 57)
print(f,'-dpsc2', '-append',fname)
Когда я проверяю значение имя_файла я получаю prefix1.0suffix
(по желанию), и когда я проверяю значение из index
я получаю 1
, Если я заменю fname = strcat('prefix', outputFileNames(index),'suffix');
на fname = strcat('prefix', '1.0','suffix');
Программа отлично работает и выводит на ожидаемое имя файла.
Последняя попытка сделать смысл этого:
fname = strcat('prefix', outputFileNames(index),'suffix');
class(fname)
дает char
и
fname = strcat('prefix', '1.0','suffix');
class(fname)
также дает char
.
Мои вопросы:
Почему это происходит? Является ли мой массив строк не массив строк?
Как исправить это? IE, как сделать динамическое имя выходного файла?
Выше проблемы возникают из-за того, что у меня есть лот (> 5 ГБ) данных, которые мне нужно преобразовать в графики и сохранить в файлах. В конечном итоге мне нужны все эти графики в одном документе, который можно открыть на любом ПК (например, ... pdf!). Для этого я добавляю все свои данные в виде отдельных страниц в файл postscript, а затем конвертирую ps в pdf. К сожалению, ps не очень эффективны в пространстве, поэтому я заканчиваю гигантский файл .ps. Выше моя попытка разбить один гигантский .ps на несколько более мелких, которые я могу преобразовать в pdf в свою очередь (а затем объединить в один pdf). Такой подход очень запутан, но я не смог найти лучшего способа. Есть ли у вас предложение для лучшего способа выполнить мою задачу?
Пожалуйста, дайте мне знать, если у меня остались какие-либо детали, которые могут быть полезны. Я новичок в Matlab, и это мой первый пост SO относительно Matlab!
Просто подумал: может ли это быть проблемой безопасности? Является ли изменение имени выходного файла в коде no-no? – alexvas
Вы уверены, что сообщение об ошибке связано с вашим 'fname'. Для меня это скорее похоже на что-то не так с вашей фигурной ручкой. Попробуйте заменить 'fname' на фиксированное имя, скажем,' 'foo.ps" и проверить, будет ли файл напечатан ... – sebastian