Загрузка и печать нескольких файлов из каталога (MATLAB) - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь загрузить несколько файлов из созданного мной каталога, вывести их на отдельные фигуры, а затем вывести их в виде файлов .tiff.

Я считаю, что у меня есть весь код, необходимый для построения графика.загруженные файлы, а затем вывод их в виде файлов .tiff, но я не могу загрузить файлы, загруженные в MATLAB первоначально для выполнения черчения и вывода.

Используемая функция:

function x = chaos(x0, lambda, vectorLength);
x0 = 0.5;
lambda = 3.8;
vectorLength = 1500;

x = zeros(vectorLength,1);
x(1) = x0;

for k=2:vectorLength,
    x(k) = lambda*x(k-1)*(1-x(k-1));
end

T = 2;
x1 = x(1:end-2*T);
x2 = x(T+1:end-T);
x3 = x(2*T+1:end);

figure('Color',[1 1 1]);
h = plot3(x1, x2, x3);
xlabel('x(t)');
ylabel('x(t+T)');
zlabel('x(t+2T)');

Код, использованный для создания каталога и файла (рабочий):

currentFolder = pwd;
mkdir('chaos');
for k = 1:30
    data=chaos(k);
    full_filename = fullfile(currentFolder,['\chaos\chaos' num2str(k) '.txt']);
    fid = fopen(full_filename,'w' );
    fprintf(fid,'%d\n',data);
    fclose(fid);
end
full_filename = fullfile(currentFolder,['\chaos\chaos1.txt']);
fileID = fopen(full_filename,'r');
formatSpec = '%f';
X = fscanf(fileID,formatSpec);
plot(X);

Код, используемый для попытки загрузки, печати, затем вывода файлов из созданного каталога (не работает):

for k = 1:30
    dir('chaos');
    x = load('chaos(k).txt');
    figure('Color', [1 1 1]);
    plot(x);
    pause(0.1);
    eval(sprintf('print -dtiff chaos%d', k));
end

Я ожидаю, что 30 рисунков будут выведены на экран и выведены на экран, а затем 30 рисунков выведены в виде файлов .tiff.Фактический вывод показывает только каталог в командном окне, и ничто не выводится на график или выводится как файлы .tiff.

РЕДАКТИРОВАТЬ: вот обновленный код для устранения проблемы с переменной k: x = load(['chaos', num2str(k), '.txt']);

1 Ответ

0 голосов
/ 19 апреля 2019

Вот проблема:

for k = 1:30
    dir('chaos');
    x = load('chaos(k).txt');

Переменная интерполяция не работает так же, как в Matlab.Если вы хотите, чтобы значение, содержащееся в k, вошло в вашу строку, вам нужно использовать конкатенацию строк или sprintf:

for k = 1:30
    file = sprintf('chaos%d.txt', k);
    x = load(file);

Похоже, что вы делаете правильные вещи ниже в своем выводекод;вам просто нужно применить его и здесь.

Вам, вероятно, следует также избегать eval.Назовите это так:

print('-dtiff', sprintf('chaos%d', k));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...