Как я могу создать фигуры в цикле? - PullRequest
0 голосов
/ 05 ноября 2018

Мне нужно создать фигуру для каждых 80 измерений вектора строки Bn длиной 31999. Я пытался написать этот код, но я получаю только одну фигуру со всеми измерениями (31999):

k= length(Bn);
for i= 1:80:(k-1)
    Bn1(i) = L(i);
    plot(Bn1);
end

есть предложения?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Учитывая вектор Bn, вы можете извлечь 80 значений, начиная с индекса ii, используя Bn(ii:ii+79). Таким образом, в вашем цикле вам нужно построить только эти значения.

Тем не менее, это создаст 400 фигурных окон, что не поддается управлению. Вместо этого я рекомендую сохранить графики в файл:

figure
k = numel(Bn);
for ii = 1:80:k
    plot(Bn(ii:ii+79));
    print('-dpng','-r0',sprintf('plot%.3d',ii))
end

Команда plot будет перезаписывать предыдущий график каждый раз.

Я рекомендую вам просмотреть документацию для print, чтобы узнать, какие у вас есть опции (различные форматы файлов -d и разрешения -r).

0 голосов
/ 05 ноября 2018

Если вы хотите создать одну фигуру для каждого элемента, просто вставьте команду figure в цикл

k= length(Bn);
for i= 1:80:(k-1)
    figure % this is what you need
    Bn1(i) = L(i);
    plot(Bn1);
end

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

...