在Matlab中拆分数组

时间:2014-03-22 17:45:14

标签: matlab csv plot

我正在研究这个项目,我的目标是在图表上绘制每秒BPM并在点到点之间更改图表的颜色。

我有一个包含数据的CSV文件,此时我可以绘制BPM与时间图表。但是,我的下一个目标是为不同的区域更改此​​图表的颜色。

我已将CSV文件中的LED颜色定义为红色,b绿色,c黄色和d-蓝色。样本数据如下:

秒BPM LED
1 64 a
2 140 c
3 162 d
4 110 b
5 11 112 b
6 145 c
7 146 c
8 149 c
9 145 c
10 60 a

这是我目前拥有的用于绘制BPM与时间的图表的代码。现在我必须根据CSV文件中的LED字母更改颜色。

ftoread = 'DATALOG.CSV';
fid = fopen(ftoread); %OPENS the CSV file
data = textscan(fid,'%f%f%f%c','Headerlines',1,'Delimiter',',');
fclose(fid); % closes the file

Time = data{1}; %Time variables moved to new variable called x
BPM = data{2};% Readings moved to variable y
LED= data{3};

plot(Time,BPM, 'r'); % plot bp readings vs time

xlabel('Time of Reading');

ylabel('Blood Pressure Reading & Speed');

title('Blood Pressure Readings vs Time');

1 个答案:

答案 0 :(得分:0)

如果你不想使用分散,你可以这样做

LED = [1 3 4 2 2 3 3 3 3 1];
colors = ['r', 'g', 'b', 'y']; % A color for each LED
Time = [1:10];
BPM = [64 140 162 119 112 145 146 149 145 60];
figure; hold all;

i = 1;
j = 2;
last_LED = LED(i);
for j=2:numel(LED)
    if LED(j) ~= last_LED
        plot(Time(i:j), BPM(i:j), colors(last_LED));
        last_LED = LED(j);
        i = j;
    end
end