昨天一朋友根据第一个表编了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处理数据
答案:1 悬赏:80
解决时间 2021-03-08 17:59
- 提问者网友:星空下的寂寞
- 2021-03-07 22:57
最佳答案
- 二级知识专家网友:孤伤未赏
- 2021-03-07 23:22
参考代码
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)与你图中给出的不同,按照其它数据的规律,我认为是你的错了。
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)与你图中给出的不同,按照其它数据的规律,我认为是你的错了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯