在数组中找到所有连续组的位置(MATLAB)

时间:2016-09-10 00:41:00

标签: arrays matlab

我有一系列以下值:

  X=[1 1 1 2 3 4 1 1 1 1 5 4 2 1 1 2 3 4 1 1 1 1 1 2 2 1]

我想得到数组中所有连续的位置(索引),并构造一个数组,用于保存每组连续零的起始位置和结束位置:

  idx= [1 3; 7 10; 14 15; 19 23; 26 26];

我尝试使用以下功能,但我不确定如何实现它:

   positionofoness= find(X==1);
   find(diff(X==1));

如何构造idx数组??

1 个答案:

答案 0 :(得分:2)

您的3 8 5 7 2#include <stdio.h> int a[]={5,8,3,7,2}; void printArray() { printf("\nStatus of the array\n"); for(int i=0;i<5;i++) printf("[%d]",a[i]); printf("\n"); } void swap(int x,int y) { // printf("%d %d",a[x],a[y]); a[x]=a[x]+a[y]; a[y]=a[x]-a[y]; a[x]=a[x]-a[y]; } void maxHeap(int i) { int largest=i,right=0,left=0; left=(2*i)+1; right=(2*i)+2; if(a[left] > a[i]) largest=left; printf("L=%d R=%d",left,right); if(a[right] > a[i]); { printf("\na[right]=%d a[i]=%d",a[right],a[i]); largest=right; } if(largest != i) swap(largest,i); } void main() { printArray(); maxHeap(0); printArray(); } 解决方案几乎就在那里。要查找finddiff更改的所有位置,请在开头和结尾填X {/ 1}}:

1

请注意,每个偶数元素X表示连续1结束的索引+ 1。

NaN