Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何找到数组中最大非零值集的平均值_Matlab - Fatal编程技术网

Matlab 如何找到数组中最大非零值集的平均值

Matlab 如何找到数组中最大非零值集的平均值,matlab,Matlab,如何找到数组的起点并计算从起点到1秒的平均起点 A=[0.0-0.01-0.2 0.3 0.4 0.5 0.0 0 0.01 0.02 0.03 0.04 0.1 0.2 0.3 0.4 0.7 0.8 1 1.2 1.3 1.4 1.5] 时间=[0.1.2.3.4.5.6.7.8.91.21.31.41.51.61.71.81.92.12.22.32.42.62.62.72.82.73.1] 通过去除噪声,起点应为等于0.01的A(17) 然后在1秒后计算起点的平均值,这取决于您的数据。这有

如何找到数组的起点并计算从起点到1秒的平均起点

A=[0.0-0.01-0.2 0.3 0.4 0.5 0.0 0 0.01 0.02 0.03 0.04 0.1 0.2 0.3 0.4 0.7 0.8 1 1.2 1.3 1.4 1.5]

时间=[0.1.2.3.4.5.6.7.8.91.21.31.41.51.61.71.81.92.12.22.32.42.62.62.72.82.73.1]

通过去除噪声,起点应为等于0.01的A(17)


然后在1秒后计算起点的平均值,这取决于您的数据。这有点不清楚,但在您的示例中,噪声似乎可以超过您的“信息值”。所以你不能仅仅用一个阈值来检测它。 可能得到的位置是A总是优于0.01:

startpos= (A>0).argmax()
truedata=A[startpos:]
time=T[startpos:]

您可以使用该方法计算平均值。mean()代码是不言自明的

A=[0 0 0 0 0 -0.01 -0.2 0.3 0.4 0.5 0 0 0 0 0 0 0.01 0.02 0.03 0.04 0.1 0.2 0.3 0.4 0.7 0.8 1 1.2 1.3 1.4 1.5] ;
Time=[0 0.1 .2 .3 .4 .5 .6 .7 .8 .9 1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.8 3 3.1];

%make negative values zero
A(A<0)=0; 

%get non negative values position and add padding
mask=[0,A>0,0]; 

%get starting points
startingPoints =strfind(mask,[0 1]); 

%get length of continuous values from starting points
temp =diff(find(~mask))-1;
length = temp(temp>0); 

%get the index of largest length
[~,index]=max(length);

%get starting point
dataStartingIndex = startingPoints(index)

%starting point value
A(dataStartingIndex)

%get ending point after 1 seconds
dataEndingIndex=find((Time(dataStartingIndex)+1)==Time);

%find average
avg=mean(A(dataStartingIndex:dataEndingIndex))
A=[0.0-0.01-0.2 0.3 0.4 0.5 0.0 0 0.01 0.02 0.03 0.04 0.1 0.2 0.3 0.4 0.7 0.8 1 1.2 1.3 1.4 1.5];
时间=[0.1.2.3.4.5.6.7.8.91.21.31.41.51.61.71.81.92.12.22.32.42.62.62.72.82.73.1];
%使负值为零
A(A0,0];
%获得出发点
起始点=strfind(掩码[0 1]);
%从起点获取连续值的长度
temp=diff(find(~mask))-1;
长度=温度(温度>0);
%获取最大长度的索引
[~,索引]=最大(长度);
%获得出发点
dataStartingIndex=起始点(索引)
%起点值
A(数据开始索引)
%1秒后到达终点
dataEndingIndex=查找((时间(dataStartingIndex)+1)=时间);
%求平均值
平均值=平均值(A(数据开始索引:数据结束索引))

什么是B数组?这是一个数组我编辑了我的问题。谢谢这里什么样的值被认为是噪声?噪声值从A(6)到A(10).我希望数据从第一个非零值开始,其中图形变为常数,不再变为零,因为连续出现的最大非零值集被视为数据,对吗?最好进行注释(当您有足够的代表时)要求澄清,而不是写一封可能无法回答问题的暗箭伤人的电子邮件。非常感谢,这是我想要的完美答案