matlab处理数据昨天一朋友根据第一个表编了matlab程序,实现了功能,clc;clearA=xlsread('E:/data/mydata.xlsx','Sheet1','A1:B15');%假设数据放在E:/data/mydata.xlsx的Sheet1的A1:B15区域.a=A(:,1);b=A(:,2)
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/13 16:09:20
matlab处理数据昨天一朋友根据第一个表编了matlab程序,实现了功能,clc;clearA=xlsread('E:/data/mydata.xlsx','Sheet1','A1:B15');%假设数据放在E:/data/mydata.xlsx的Sheet1的A1:B15区域.a=A(:,1);b=A(:,2)
matlab处理数据
昨天一朋友根据第一个表编了matlab程序,实现了功能,
clc;clear
A=xlsread('E:/data/mydata.xlsx','Sheet1','A1:B15');%假设数据放在E:/data/mydata.xlsx的Sheet1的A1:B15区域.
a=A(:,1);b=A(:,2);
k=find(diff(b)~=0);
ind=a(k);n=length(ind);
B(n+1,3)=0;
if b(1)==1
B(:,1)=[0;ind];
B(:,2)=[ind;a(end)];
B(1:2:end,3)=1;
B(2:2:end,3)=2;
elseif b(1)==2
B(:,1)=[0;ind];
B(:,2)=[ind;a(end)];
B(1:2:end,3)=2;
B(2:2:end,3)=1;
else
error('数据有误')
end
B
但是实际上B列的数据不仅仅是1和2,有好多种,那么怎么弄?
matlab处理数据昨天一朋友根据第一个表编了matlab程序,实现了功能,clc;clearA=xlsread('E:/data/mydata.xlsx','Sheet1','A1:B15');%假设数据放在E:/data/mydata.xlsx的Sheet1的A1:B15区域.a=A(:,1);b=A(:,2)
参考代码
a = [0; A(:,1)]; b = [A(1,2); A(:,2)];ind = [1; find(diff(b)~=0); length(b)];
B = [a(ind(1:end-1)) a(ind(2:end)) b(ind(2:end))]
运行结果
对于第一个文件的运行结果:
B =0 100 1
100 120 2
120 160 1
160 220 2
220 380 1
对于第二个文件的运行结果:
B =0 140 2
140 160 -3
160 180 -2
180 260 1
260 300 2
300 340 1
340 380 2
说明
1、读写Excel文件不是本题的关键,这里省略不提.
2、第二题结果的B(end,1)与你图中给出的不同,按照其它数据的规律,我认为是你的错了.