0

У меня есть текстовый файл, который содержит результаты вычислений из расчета двумерного (2D) потока. Я хочу привести результаты в Matlab. Я часто делал это много лет назад, но забыл, как и буду очень благодарен за любой совет.Matlab: как сделать 2D-сюжет/анимацию из данных в одном векторе?

Ниже приведен фрагмент файла результатов. Левый столбец - это шаг времени (в качестве примера я показываю только данные с временными шагами 45 и 46, файл слишком длинный для публикации всех данных). Правая колонка - это трудная часть для меня. Правый столбец соответствует всем точкам x-y (поэтому один столбец 2D-данных). Я знаю количество значений x и количество значений y.

Моя проблема заключается в том, что я не знаю, как разделить правую колонку на (i) двухмерное построение (ii) одного временного шага.

45.0000 1.0000 
    45.0000 0.9742 
    45.0000 0.9542 
    45.0000 0.9521 
    45.0000 0.9480 
    45.0000 0.9436 
    45.0000 0.9388 
    45.0000 0.9326 
    46.0000 1.0000 
    46.0000 0.9742 
    46.0000 0.9542 
    46.0000 0.9521 
    46.0000 0.9480 
    46.0000 0.9436 
    46.0000 0.9388 
    46.0000 0.9326 

...

я сначала хочу сделать 2D графики х и у данных. Затем я хочу оживить их (т. Е. График для каждого временного шага, я, вероятно, могу понять, что часть). Наиболее важная часть - двухмерные сюжеты. Если бы кто-нибудь был достаточно любезен, чтобы указать мне пример того, как создать 2D-график с правильной индексацией из вектора данных, я был бы очень благодарен.

+0

Итак, у вас есть различные текстовые файлы каждый раз по разным шагам времени .... и ваша цель заключается в каждом шаге, вы хотите отображать данные на каждом временном шаге в анимированном сюжете? Например, на шаге 1, покажите точки ... подождите несколько минут, затем на шаге 2, покажите точки и т. Д. Я предполагаю, что каждый временной шаг будет на горизонтальной оси? Будет ли это по существу выглядеть как график рассеяния с полосами точек на каждом временном шаге? – rayryeng

+0

Спасибо за ваш ответ, rayryeng. Извините, я не был ясен. У меня есть один текстовый файл для каждого расчета. Каждый текстовый файл содержит все результаты. Я хочу (1) сделать один график x-y для каждого временного шага, затем (2) объединить все графики в анимацию. Часть, на которой я больше всего застрял, - это (1). Я отредактирую свой вопрос, чтобы сделать его более ясным. – user3292696

+1

Итак, если вы указали каталог, у вас есть файлы и внутри каждого файла, то по существу будет 2D-матрица точек. Вы хотите выполнить 2D-график для каждого текстового файла ... анимированным, я предполагаю, что вы хотите показать каждый из этих наборов точек отдельно? ... вы хотите очистить фигуру и показать эти точки или добавить их поверх цифры? Вы хотите новое окно? Являются ли имена файлов чем-то разумными ... например, есть ли какой-то конкретный порядок, в котором вы должны их замышлять? Вам нужно добавить дополнительную информацию. Мне не нужно было больше спрашивать дополнительную информацию, как это – rayryeng

ответ

0

Я не совсем уверен, если я понял ваш вопрос, поэтому я делаю некоторые предположения.

Как я понял, первый столбец дает временную метку, а во втором столбце - измеренные данные потока. I принять, что данные потока, измеренные в одном и том же временном интервале, измеряются в разных положениях, и вы хотите построить профиль потока для каждого временного шага.

Это можно сделать с помощью следующего кода, т.е. один отдельный участок для каждого временного шага:

%% separate plot for each timestep 
fid = fopen('test.txt'); 

while ~feof(fid) 
    C = textscan(fid,'%f %f',8); 
    figure(); 
    timestep = C{1}; 
    plot(C{2}); 
    title(num2str(timestep(1))); 
end 

Анимационная со всеми профилями потока в одной фигуры могут быть сгенерированы с помощью следующего кода:

%% animation 
fid = fopen('test.txt'); 

figure(); hold on; 
while ~feof(fid) 
    C = textscan(fid,'%f %f',8); 
    timestep = C{1}; 
    plot(C{2}, 'DisplayName', num2str(timestep(1))); 

    pause(1); 
end 

hold off; 
legend show; 
+0

Большое спасибо, snalx. Да, ваши предположения верны. Одна вещь, которую мне нужно сделать, это сделать заговор для каждого времени. Поэтому в примере в моем вопросе мне нужны отдельные сюжеты для «45» и «46». Есть ли способ сделать отдельный график, когда значения в левом столбце меняются? Или - если это невозможно - указать определенное количество значений, которое должно быть включено в каждый график? Всегда существует одинаковое количество значений для каждого временного шага. Надеюсь, я буду здесь ясно. Большое спасибо. – user3292696

+0

пример верхнего кода должен работать с изменением значений в левом столбце, учитывая, что у вас есть 8 значений измерения для каждого временного интервала. Вы проверили код с вашими данными? – snalx

+0

спасибо, snalx. Сначала у меня была проблема, не связанная с вашим примером, но она исправлена, и теперь графики работают отлично. Очень цените все свое время. Я попробовал вас голосовать, но получил сообщение о том, что моя репутация слишком низкая, чтобы его можно было записать. – user3292696