Вложенная петля в MATLAB - PullRequest
       0

Вложенная петля в MATLAB

2 голосов
/ 01 февраля 2011

начало цикла1

начало цикла2

начало цикла3

Х

конец цикла3

конец цикла 2

end loop 1

Могу ли я сохранить значение X таким образом, чтобы я мог видеть все значения после выполнения всех циклов?Просто упоминание X - это текстовые строки.

Обновление: работает ,.Я получаю вывод вроде:

       {790x1 cell}
          []
          []
          []
          []
          []
          []
          []
          []
          []

Я предполагаю, что все мои строки сохраняются в ячейке {790x1}.Есть ли способ их увидеть?Код:

X_record=cell(10000,1);
c=1;
for k=1:200
    for i=1:300
        for it=1:200
           X='NY is crowded';
           X_record{c}=X;
           c=c+1;
        end
    end
end

РЕДАКТИРОВАТЬ: 2

clear all
clc

X_record=cell(10,1);
c=1;

for k=1:2
    for i=1:3
        for it=1:2
           X='NY is crowded';

           f_id=fopen('c.txt','a+');
           fprintf(f_id,'%5s\n',X) ;%#ok<CTPCT,CTPCT>
           fclose(f_id)

           X_record{c}=X;
           c=c+1;
        end
    end
end

ВЫХОД:

Нью-Йорк переполнен Нью-Йорк переполнен Нью-Йорк переполненНью-Йорк переполнен Нью-Йорк переполнен .....

Почему я не получаю никакой новой строки?

Ответы [ 3 ]

4 голосов
/ 01 февраля 2011

Использовать массив ячеек :

X_record = cell(M*N*P,1);

c = 1;
for i = 1:M
    for j = 1:N
        for k = 1:N
            X = whatever;
            X_record{c} = X;
            c = c + 1;
        end
    end
end
1 голос
/ 03 февраля 2011

Чтобы ответить на ваш второй вопрос о том, почему вы не видите каждый NY is crowded в новой строке, я предполагаю, что вы, вероятно, просматриваете свой файл c.txt с помощью Microsoft Notepad.Вот выдержка из раздела «Примеры» документации для функции FPRINTF :

Функции импорта MATLAB, все приложения UNIX и Microsoft Wordи WordPad распознает '\n' как индикатор новой строки.Однако, если вы планируете читать файл с помощью Microsoft Notepad, используйте '\r\n' для перехода на новую строку при записи.

Итак, вы должны попробовать напечатать вывод следующим образом:

fprintf(f_id,'%5s\r\n',X);
0 голосов
/ 03 февраля 2011

Я не знаю точно, почему

       X='NY is crowded';
       fprintf(f_id,'%5s\n',X)

.. не работает, но я предлагаю вам попробовать

       X='NY is crowded\n';
       fprintf(f_id,'%5s',X)

... вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...