2013-11-22 3 views
0

Я пишу программу для построения графиков в цикле, и я хочу сохранить каждый график, который выводится как .jpg файл с изменением имени файла. Вот мой код для сохранения графики:MATLAB Сохранение ошибки Ошибка имени файла

filename = strcat('WI_Pollutants_', D(i,6), '_200706_O3'); 
saveas(gcf, filename, 'jpg'); 

Сохраненный файл должен выйти в следующем виде с D (я, 6) изменение каждой итерации цикла.

WI_Pollutants_003-0010_200706_O3.jpg 

Однако, я бегу ошибку: (? Может быть, это к должному с saveas желающей строку только)

Error using saveas (line 81) 
Invalid filename. 
+0

Не могли бы вы включить именно то, что 'D (i, 6)' находится до этого цикла? И в этом отношении, имя файла? – PearsonArtPhoto

+0

'D' - сортированная матрица ячеек данных O3. Таким образом, это все данные для 'O3_sorted'. i идет от 1 до 32 и является 32 уникальными кодами сайтов (сайты, где O3 является мерой). Поэтому 'D (i, 6)' является 6-м столбцом 'O3_sorted', вытягивая только строки, в которых код уездного сайта совпадает с тем, что находится в i в момент времени (например, '003-0010' для i = 1). 'filename' - это то, что я хочу назвать графиком, который выходит. Например, 'WI_Pollutants_003-0010_200706_O3.jpg'. 'filename' создает это имя, изменяя' 003-0010' часть для каждого нового графика. – shizishan

ответ

3

saveas только принимает символы как имя файла. Но когда было создано filename, strcat сделал массив клеток. Следовательно, имя файла необходимо преобразовать в массив символов.

filename = char(strcat('WI_Pollutants_', D(i,6), '_200706_O3')); 
saveas(gcf, filename, 'jpg'); 

Это решает проблему.

0

Я думаю, что ваш D{i,6} оседает завернутые как массив, от этой линии:

D{i,6} = [num2str(D{i,6}) '-' num2str(D{i,7})]; 

Чтобы решить эту проблему, просто удаление [] s

D{i,6} = num2str(D{i,6}) '-' num2str(D{i,7}); 

Я думаю, что произошло то, что вы сделали D{i,6}=['someString'], и добавьте в команду [] 's werent'.

Как проверить, если что-то подобное происходит снова, просто fprintf(filename) прямо перед использованием и посмотрите, что выйдет. Я подозреваю, что вы найдете там проблему. Вы всегда можете удалить оператор печати позже.

+0

Я не могу просто избавиться от скобок. Это делает утверждение открытым предложением и запускает ошибку. Но я попробовал fprintf (имя файла), и это привело к предложениям и ошибкам, которые помогли мне выяснить, что было не так. Мне просто нужно было преобразовать имя файла в символ вместо ячейки в строке, где я его создаю. Благодарю. – shizishan

Смежные вопросы