用较早数组中元素附近的数值修改数组

1次观看(过去30天)
罗希特Mangalekar
罗希特Mangalekar 2021年9月18日
编辑: 罗希特Mangalekar2021年9月18日
你好,
我不知道题目是否清楚我真正想问的是什么。
我试着画出矩形脉冲。我只是不想让任何被绘制的脉冲重叠。
问题是,脉冲的起始时间是通过某个程序计算出来的。当我找到下一个用户的脉冲时,这些实例与之前的实例重叠(以多种方式)。下面是代码。
GlobIWC = 0 (86400);首先,我定义全局实例向量
NZGlobIWC =找到(GlobIWC)%全局实例开始时间向量-只提取全局向量的非零元素。
NZGlobFWC =找到(GlobIWC)%全局实例结束时间向量
这些向量只是用来初始化程序中的循环
用户=[1 2 3 4 5 6]
步伐= 0:0.00027778:24;
用户= 1:长度(用户)
%一些代码
WCId=[3437 68688 77158 79405]我得到这个当前用户在时间尺度(0-24小时)从1到86400的实例位置
大调的= 240;%这将是脉冲的持续时间,以秒为单位
FWCId = WCId +大调的;%这将是脉冲的结束时间位置
FWCId=[34619 68928 77398 79645]%这是结束实例向量
%重叠去除回路
jj = 1:长度(WCId)
2 = 1:长度(NZGlobIWC)
如果((NZGlobIWC (ii)大调的)< WCId (jj)) & & (WCId (jj) < (NZGlobFWC (ii) +大调的))| | ((NZGlobIWC (ii)大调的)< FWCId (jj)) & & (FWCId (jj) < (NZGlobFWC (ii) +大调的))
WCId(jj) = NZGlobFWC(ii) + Dur +randi ([240 600]);在最中间的循环中,我尝试使用for而不是if
结束
结束
结束
在上面的循环中,我试图阻止从通道(NZGlobIWC-dur)到(NZGlobIWC-dur)中的全局非零矢量的时间位置
%新脉冲的开始时间(WCId)和结束时间(FWCId),并为WCId分配一个新值,该值是结束后的某个随机时间
早期脉冲百分比
2 = 1:长度(WCId)
GlobIWC (WCId (ii)) = WCId (ii);在这里,我将新元素添加到use vector的全局实例,
结束
%一些代码
大调的= 120;现在在这里计算杜尔的新值。
NZGlobIWC =找到(GlobIWC);开始时间和结束时间的新的非零实例向量在这里创建
NZGlobFWC = NZGlobIWC +大调的;
kk = 1:长度(WCId)
FlowWC (WCId (kk): (FWCId (kk))) = 6;
结束
情节(步伐,FlowWC);
持有
结束
我发现的一件事是,在重叠删除循环,我检查当前实例(WCId)与全球实例(NZGlobIWC),但我不检查这个新形成的实例(修改WCId)再次与NZGlobIWC。这就是可能引起问题的地方。我尝试在重叠删除中使用“while”循环。但这个循环要花很长时间才能结束。因为这只是我程序的很小一部分,我需要计算有效的方法来解决这个看似复杂的问题。
我怎样才能停止这些脉冲的重叠呢?
请帮助。
附注:附上预期的数字。

答案(0)

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!