由于课题要求,采集的数据是csv文件,但是由于时间太紧了,我只能选一些比较笨重的方法进行提取。
其中pressdata单元格下,每个单元格内含有500个数据,只能选择比较笨重的方法读取,希望大家能告诉我更有效的方法。
1. 将文件中无用数据删除,并将逗号剔除
2. 建立一个Str2Mat函数
function Mat = Str2Mat(str)
%this funtion put string into a matrix which contains the numbers in the
%string
%str:string;Mat the data matrix
strCell = str{1};
strLen = length(strCell);%find out the length of the string
%begin for loop in order to get every number in this string
Mat = [];
beginPosition = 0;
for i =1:strLen
if strCell(i) ~= ' '%the first character of the string
beginPosition = i;%if this is not a space, we can judge that it begins the number
break;
end
end
strArr{strLen} = [];
counter = 1;
for i = beginPosition:strLen
if strCell(i) ~= ' '%将数字组成的字符串拆分成各数字组成的数组,组内的元素为数字的字符串
strArr{counter} = [strArr{counter},strCell(i)];
else
counter = counter + 1;
end
end
for i = 1:strLen
if ~isempty(strArr{i})%将字符串翻译成数字,存入Mat中
Mat(i) = str2double(strArr{i});
end
end
end
3. 最后调用函数就能将csv中矩阵数据读出来了
clear
clc
[a,b] = xlsread('G:\sss\脉象MATLAB处理程序\SHAONA\1.xlsx');%这样读取出来的数据分为两部分,一部分数据,另一部分就是字符串
str = b
%示例数据,需换为上边读入的数据
%找出所在字符串那一列,应用函数,将字符串变为数组即可。
%%str = {'10 20 03 15 027';'15 36 70 9 8';'18 78 23 69 32'}
[m,n] = size(str);
for i = 1:m
Mat(i,:) = Str2Mat(str(i,1));%%调用str2Mat函数,参数为上边元胞矩阵中的每个字符串
end