标题:index exceeds matrix dimension 出错
只看楼主
iamawild
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-5
 问题点数:0 回复次数:3 
index exceeds matrix dimension 出错
%请输入以下数据
Factor=0.7766  ;%Factor为水平方向力的校正因子,06-7-27updated.例如y = 0.4562x + 0.1748中的0.4562,其中y为实际施加的力,x为传感器测得的力
Load=2.5;%Load为施加载荷(砝码质量),单位kg
Criterion1=0.05;%摩擦系数大于Criterion1值时,开始记录周期数
Criterion2=2.0;%摩擦系数大于Criterion2值时,视为油膜破裂
N=40;
Calibration=-0.02;%校正摩擦系数初始的0点漂移
%结束
s=size(data);
d=s(1);
C=Factor.*data(1:d,1)/(2*9.8*Load+14)+Calibration; % "5" 为载荷,单位kg
%plot (1:d,C(1:d))
h=1;
for i=1:d
    if C(h)>Criterion1  %设置值, 摩擦系数大于该值则开始计周期数
        h;
    else h=h+1;
    end
end
h%开始计周期数的采样点
Cp=C(round(0.5*d:0.7*d));%从平稳运行的部分(整个的50%-70%的部分)
max=max(abs(Cp));%找这一部分的最大值
hh=round(0.5*d);%设置hh为开始寻找断裂点的采样点
a(1)=h;
x=2;
sum1=0;
for i=round(0.5*d):d
    if abs(C(hh))>Criterion2%1.5*max %1.5为设置值,摩擦系数大于设置值*前段取样点中的最大值则视为油膜破裂
        hh;
    else hh=hh+1;
    end
end
if hh>d
    hh=hh-1
end
No=0;
for r=h:hh
if C(r-1)<0
   j=1;%如果第r点的前一采样点值<0,则j=1
else j=0;
end
if C(r)>0
        k=1;%如果第r采样点值>0,则k=1
    else k=0;
end
l=and(j,k);
if r>h% 保证记录周期数的各周期的起点r应大于第一个周期的起点h
    m=1;
else m=0;
end
if and(l,m)==1
    No=No+1;% 如果第r采样点>0,且其前一采样点值<0,则到r点时为1个cycle
    a(x)=r;
    a(x)-a(x-1);
    sum1=sum1+a(x)-a(x-1);
    x=x+1;
end
end
a;% a(1)为第一个周期的起点;a(2)为第二个周期的起点
sum1=sum1-[a(2)-a(1)]-[a(No)-a(No-1)];
CycleNumber=No
Sampling=round(sum1/(No-2))
semi=round(0.5*Sampling)
ahalf=a(2)-semi;%第二个半周期的起始点
semi1=ahalf-a(1)%第一个半周期一共有的数据点个数
Cof1half=C(a(1):ahalf)%输出第一个半周期各点的摩擦系数
zz2=round(a(1)+0.7*(semi1));
zz1=round(a(1)+0.3*(semi1));
plot(1:hh,C(1:hh),'-',hh:d,C(hh:d),'-',h,C(h),'*',hh,C(hh),'*',zz1,C(zz1),'*',zz2,C(zz2),'*',ahalf,C(ahalf),'*',a(2),C(a(2)),'*',a(3),C(a(3)),'*',a(4),C(a(4)),'*',a(5),C(a(5)),'*',a(6),C(a(6)),'*',a(7),C(a(7)),'*',a(8),C(a(8)),'*',a(9),C(a(9)),'*',a(10),C(a(10)),'*')
C(zz1:zz2);
COF(1)=sum(C(zz1:zz2))/(zz2-zz1+1);
COFpercycle(1)=0;
n=2;
x=0;
for x=2:(N+1)
    z=a(x)-semi;% 例如N=10, 则为第2个半周期到第20个半周期,各半周期的aveage of COF,可设置
    zz1=round(z+0.3*semi);
    zz2=round(z+semi-0.3*semi);%各个半周期取中部40%的数值,不要两头各30%的数值,可设置
    C(zz1:zz2);
    COF(n)=sum(C(zz1:zz2))/(zz2-zz1+1);
    n=n+1;
    z=a(x);
    zz1=round(z+0.3*semi);
    zz2=round(z+semi-0.3*semi);%各个半周期取中部40%的数值,不要两头各30%的数值,可设置
    C(zz1:zz2);
    COF(n)=sum(C(zz1:zz2))/(zz2-zz1+1);
    n=n+1;
end
COFhalfcycle=abs(COF');
COFperhalfcycle=COFhalfcycle(1:1:2*N)
for u=1:1:N
    COFpercycle(u)=abs(COF(2*u-1)-COF(2*u))/2;% 这个算法可以避免零点偏移带来的影响
end
COFpercycle=COFpercycle'

COFaver1toN=sum(COFpercycle)/N % "5" 前1-5个周期的aveage of COF,可设置
COFaver2toN=sum(COFpercycle(2:N))/(N-1)
COFaver3toN=sum(COFpercycle(3:N))/(N-2)
COFaver4toN=sum(COFpercycle(4:N))/(N-3)
COFaver5toN=sum(COFpercycle(5:N))/(N-4)
搜索更多相关主题的帖子: dimension matrix exceeds index 
2008-09-05 15:13
iamawild
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-5
得分:0 
错误提示
??? Index exceeds matrix dimensions.

Error in ==> H:\calculate program\RCPcofV12.m
On line 76  ==>     z=a(x)-semi;% 例如N=10, 则为第2个半周期到第20个半周期,各半周期的aveage of COF,可设置

>>
2008-09-05 15:15
iamawild
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-5
得分:0 
我的联系方式是15821433542
qq:642315791
email:iamawildhorse@
2008-09-05 15:18
iamawild
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-5
得分:0 
如果那个兄弟能够帮助解决愿意支付50元左右的报酬
本人是学生所以只能出这多钱,谢谢
2008-09-05 15:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-231595-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015424 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved