Как прочитать информацию в текстовом файле, чтобы построить данные?MATLAB - PullRequest
0 голосов
/ 19 мая 2018

Я начинаю в Matlab, и я ищу, как получить информацию, записанную в файле .txt (которая будет в этом формате:

% t, x1, x2
0 1 1
0.01 1.01902 1.0195
0.02 1.03706 1.0376
0.03 1.05411 1.0511
0.04 1.07019 1.0719
0.05 1.08529 1.0829
0.06 1.0994 1.094
0.07 1.11253 1.1153
0.08 1.12468 1.128
0.09 1.13586 1.136
0.1 1.14604 1.14615

, чтобы затем построить ихна разных рисунках с помощью matlab. Программа должна проверить, сколько столбцов написано (здесь 1 + 2), взять первый столбец для абсцисс, а следующий для построения оси Y. Столбцы разделены одним пробелом ("").

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

сейчас я сделал это:

 data = load('test.txt');

t  = data(:, 1);
ta = data(:, 2);

x = 0: pi/10: pi;
y = sin(x)/ 100 +1;


figure('Name','Name Hello1','NumberTitle','off', ...
'units','normalized','outerposition',[0.01 0.1 0.5 0.7]);
h1 = figure(1);
plot(t, ta, 'bx', 'LineWidth',2)
title('2-D Line Plot')
xlabel('x')
ylabel('cos(5x)')

figure('Name','Name hello 2 2','NumberTitle','off',...
'units','normalized','outerposition',[0.02 0.07 0.5 0.7]);
h2 = figure(2);
plot(x, y , 'LineWidth',2)
title('2-D Line Plot')
xlabel('x')
ylabel('cos(5x)')

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Нет необходимости использовать низкоуровневые процедуры, такие как fopen и textscan, для чтения таких данных, как эта, особенно если вы не знаете, сколько столбцов существует.Также нельзя использовать цикл для построения графика данных, если только вы действительно не хотите, чтобы они были на отдельных фигурах, что для этих данных показалось бы необычным

Используйте readtable для чтения файла и нанесите все столбцы вта же ось:

data = readtable('test.txt');
plot(data{:,1},data{:,2:end});

Или, если вам нужны отдельные цифры:

for idx = 1:width(data)-1
   figure(idx)
   plot(data{:,1},data{:,idx+1});
end
0 голосов
/ 19 мая 2018

Вы можете построить все в одном окне, используя это:

fid=fopen('test.txt'); % opening the file
dataPlain=textscan(fid,'%s','Delimiter',''); % reading the data from the file
data=cellfun(@str2num,dataPlain{1},'uni',0); % getting only the numerical data
data=cat(1,data{:}); % formatting
figure; % if you want to plot everything in multiple windows, you can put this command into the for loop, too.
hold on
for ii=2:size(data,2)
    plot(data(:,1),data(:,ii)); % plot the data
end
...