我想在Matlab中创建一个脚本,可以从CSV文件中读取数据并绘制它。我的数据类似于:
时间BPM(HeartRate)
5:55:26 0
5:55:26 0
5:55:27 66
5:55:27 70
5:55:27 71
5:55:27 74
...
我想在x轴上绘制时间,在y轴上绘制BPM。我尝试过以下方法:
clear, clc;
ftoread = 'data.csv';
fid = fopen(ftoread);
y=data(:,1);
x=data(:,2);
plot(x,y);
xlabel('Time');
ylabel('Heart Rate');
title('Heart Rate Vs. Time');
很遗憾,我在y=data(:,1)
收到错误。
答案 0 :(得分:3)
为什么不使用csvread
?
data = csvread('data.csv');
x=data(:,1);
y=data(:,2);
% etc...
答案 1 :(得分:2)
看起来你错过了一些步骤。 csvread
或dlmread
可能效果不佳,因为每行都有一个字符串和一个数字。 textscan
应该快速而简单:
ftoread = 'data.csv';
fid = fopen(ftoread);
data = textscan(fid,'%s%f'); % Read in a string and a double
fclose(fid); % If you call fopen, make sure you also call fclose
x = data{1};
y = data{2};
然后,您可能希望使用datestr
和datenum
等功能将时间字符串转换为其他值。我相信偶数接受单元格数组(如x
)作为输入。