matlab - 如何读取文本文件中的信息以绘制数据?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)')
解决方案
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
推荐阅读
- python - 使用python流过滤canbus消息
- java - 参数被视为数组的 Java 测试问题,尽管它很长
- node.js - nodejs会话超时在指定时间内不起作用
- javascript - 测验未使用 xmhttp 问题重定向到最终页面
- ios - SFSpeechRecognizer 错误域=SiriAceErrorDomain 代码=718 "(null)"}
- laravel - Laravel CORS 配置路径?
- youtube-iframe-api - youtube api 不再支持 loadplaylist 功能吗?
- macos - 如何将环境变量传递给 Intellij IDEA 管理的 gradle 构建文件
- javascript - setTeams 在其余的 useEffect-code 之前运行
- visual-studio-code - 如何更改 VSCode 的 PATH?(Linux)