在Matlab中使用带逗号分隔值的fscanf

时间:2013-04-19 09:36:47

标签: matlab file-io serial-port scanf

过度连续,我得到像

这样的值

23,2004,5000
24,5005,5060
25,6789,8907

如何将这些分成三列?

对于一列,例如:

25
24
26

我可以做到

clc;clear all;close all;
arduino=serial('COM4','BaudRate',9600);
fopen(arduino);
tic;
i=0;
while toc<120;
    i = i+1;
    time(i)= toc;
    v(i)=fscanf(arduino,'%d');
    plot(time,v,'r');
    pause(.10);
end
fclose(arduino)

并将所有数据存储在v。如何为3列调整此代码?

2 个答案:

答案 0 :(得分:1)

我没有连接到串口的任何东西,所以我不能测试这个,但在循环内试试:

str = fgetl(arduino);
num = textscan(str, '%f', 'Delimiter',','); num = num{1};
%# `num` should be a 3x1 vector of numbers

首先使用serial.fgetl从设备读取一行文本,然后使用textscan或任何其他类似的字符串函数解析字符串。

答案 1 :(得分:-1)

这个怎么样:

 A = cell2mat(textscan(arduino,'%d,%d,%d'))