首页 > 解决方案 > 如何读取文本文件中的信息以绘制数据?MATLAB

问题描述

我从 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)')

标签: matlabmatlab-figure

解决方案


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

推荐阅读