24小时热门版块排行榜    

查看: 332  |  回复: 1

btliu

金虫 (小有名气)

[求助] 帮忙看看matlab程序

现在有一从excel导入的两列数据(data),可以画二维图,假定横轴为等时间间隔采点,现希望用Matlab用最少的点再现原图。具体方法如下:第一数据(x1,y1)确定保留,让(x2,y2)中的y2值与y1对比,如果y2-y1的绝对值大或等于0.0002,则保留(x2,y2)数据,然后再用(x3,y3)中y3与y2对比;反之,如y2- y1的绝对值小于0.002,则抛弃(x2,y2)数据,然后用(x3,y3)的y3与y1对比看绝对值是否大于0.00002。一直继续下去,存在二维数组中,最后画图对比。可给出二维数组的处理前后的个数以及具体数值,下面有相关的数据和程序,但是处理后的具体数值和个数无法显示,请帮忙看看。谢谢!

x = data(:,1);
y = data(:,2);
A=length(x)
subplot(2,2,1);
plot(x,y,x,y,'o');
zx =zeros(length(x),1);
zy =zeros(length(y),1);
h = 1;  
zx(1) = x(1);
zy(1) = y(1);
for k = 2:length(x)
    if abs(y(k)-zy(h)) >= 0.0002
        h = h+1;
        zx(h) = x(k);
        zy(h) = y(k);
    end
     subplot(2,2,2);
     plot(zx,zy,zx,zy,'o');
end


**********************************************************
5.008124936        -6.0395E-05
10.0000227        0.000102462
10.00032039        0.499913335
30.01483456        0.500076175
50.02924361        0.500076175
70.04370895        0.499913335
90.05820166        0.500076175
110.0727354        0.500239015
130.0871305        0.499913335
150.1016011        0.499913335
170.1160851        0.499750465
190.1306742        0.500076175
210.1450497        0.500076175
230.1594895        0.500239015
250.1740121        0.499913335
270.1885256        0.500076175
290.2029319        0.500076175
310.0146066        0.500076175
310.0304182        5.000491142
330.0449087        5.000654221
350.0593917        5.000654221
370.0738571        5.000491142
390.0883398        5.000491142
410.1028344        5.000654221
430.1172752        5.000654221
450.13178        5.000654221
470.1462329        5.000491142
490.1607997        5.000491142
510.1751916        5.000491142
530.1896607        5.000491142
550.204117        5.000491142
570.2185938        5.000491142
590.233066        5.000491142
610.0291657        5.000491142
610.0294107        -0.49970841
630.0439261        -0.49987125
650.0584147        -0.49987125
670.0729161        -0.49987125
690.0874247        -0.49970841
710.1018117        -0.49987125
730.1162976        -0.49987125
750.1308117        -0.49987125
770.1452522        -0.49987125
790.1597206        -0.49987125
810.1741984        -0.49987125
830.188647        -0.49987125
850.2031966        -0.49987125
870.2176234        -0.49987125
890.2321767        -0.49987125
910.0436822        -0.49987125
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

风泊

铁杆木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
btliu: 金币+7, ★★★很有帮助, 最后如何显示zx,zy以及对应数组的个数?便于与未处理前对比。非常谢谢! 2012-12-04 21:10:07
btliu: 金币+3, ★★★很有帮助, 谢谢 2012-12-16 10:25:13
试试看这段代码

load data;
x = data(:,1);
y = data(:,2);
A=length(x);
subplot(2,2,1);
plot(x,y,x,y,'o');
zx =zeros(length(x),1);
zy =zeros(length(y),1);
h = 1;  
zx(1) = x(1);
zy(1) = y(1);
tempy=y;
for k = 2:length(x)
    if abs(y(k)-tempy(h)) >= 0.0002
        zx(h) = x(k);
        zy(h) = y(k);
        h = h+1;
    end
end
zx=zx(1:h-1);
zy=zy(1:h-1);
subplot(2,2,2);
plot(zx,zy,zx,zy,'o');
2楼2012-12-04 13:59:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 btliu 的主题更新
信息提示
请填处理意见