질문,답변

2차원배열 때문에 미치겠습니다 ㅠㅠ

조회 수 141 추천 수 0 2016.08.03 17:12:03

CVI를 통하여 LCR미터 계측기를 코딩중입니다.

프로그래밍 스킬이 딸려서 미치겠네요 사수도 없고 혼자 독학할려니 막막합니다...

여기에 올려도 될지 모르겠습니다.. 도와주시면 감사하겠습니다 ㅠㅠ

ㅠ ㅠ먼저, 계측장비를 GPIB를 통해 데이터를 받고 있습니다.

 

여기에서 예를 들어 1번데이터에서 10번데이터를 받고 있는데, 이 과정을 n번(변수) 반복합니다.

 

n번 반복하는데 1번데이터는 1번데이터 끼리 합해서 평균내야 됩니다. 그렇게 해서 각 번호의 데이터끼리만 모아서 평균을 내야 됩니다.

 

ex) 1~10번데이터를 받는 과정을 10번반복

첫번째 반복실행 시 평균 낼 값이 없으므로 수신데이터 그대로 출력.

두번째 반복 부터 1번은 1번데이터 끼리 모아 평균, 각 번호의 데이터끼리 모아서 평균내야됩니다.

 

이것 때문에 미치겠습니다. ㅠㅠ 저 좀 도와주실분 없으신가요. 환장하겠습니다. 2차원배열 써서 어떻게 하면 될 것 같은데... 잘안되네요

 

제가 구상한 코딩은 이렇습니다. 대략 컨셉을 구성해 본 것이므로 문법에 어긋나고 안맞을 수도 있습니다 ㅠㅠ

 

수신단은 앞에서 다 처리하였고, a[100][100] 배열 안에 데이터 다 넣었습니다.

 

 

int j,i;

int repeat; // 반복측정할 변수

int index; //데이터 수신 갯수

double a[100][100]; //수신 데이터 배열

double b[100][100],c[100][100],d[100][100]......; //평균 낼 데이터 배열

 

for(j=0; j<repeat; j++){

 

for(i=0; i<index; i++){

 if(j==0){


 printf("출력 %d",a[j][index]);
  }

if(j= =1){

b[j][index]=(a[j-1][index]+a[j][index])/2;

printf("출력 %d",b[j][index]);

}

if(j= =2){

c[j][index]=(b[j-1][index]+a[j][index])/2;

printf("출력 %d",c[j][index]);

}

if(j= =3){

d[j][index]=(c[j-1][index]+a[j][index])/2;

printf("출력 %d",d[j][index]);

}

 

..........

 

}

}

 

뭐이런 식으로 노가다로 쭉 if문 쓰면 우째우째 데이터는 출력이 되겠지만... 결론은 몇번 반복할 지 알 수 없습니다 ㅠㅠ 변수로 정해서 그 변수만큼 반복해야 되므로... if문을 수백개 쓸수도 없고 ㅠㅠ

 

변수도 적게 쓰면서 깔끔하게 프로그래밍할 수 없을까요 ㅠㅠ 도저히 제머리로는 안나오는데 ...

 

어떻해야 될지 도저히 감이 안옵니다. 도와주세요 고수님들!!


야리싸내

2016.08.04 12:54:54
*.83.37.21

안녕하세요 

야리싸내 입니다.

 

날 더분데 고생이 많습니다.

이렇게 해보세요..

 

double a[50][100];//구분을 위해서 50채널에 각가 100개의 데이터를 담습니다.
double avg_a[50];//a데이터의 50개를 평균할 배열
int n;//입력 받은 데이터의 개수
int ch = 50;
int number=100;

for(i=0;i<number;i++) //100개의 데이터를 입력 받아요.
{
    n=i+1;
    for(j=0;j<ch;j++)//50개의 채널을 받아요..
    {
        a[j][i]=InputData(j);//각 채널 데이터를 하나씩 받는다.
        Mean(a[j],n,avg_a[j]);//a의 데이터를 받은 개수만큼 평균해서 각 avg_a 채널에 넣는다.

        //채널 x번의 받은 개수[n]의 평균값을 표시한다.

        printf("CH[%2d]의 개수[%d]의 평균값[%.f]\n",j,n,avg_a[j]);
    }
}

 

될려나??

 

쥐샥

2016.08.04 14:36:47
*.209.123.125

야리싸내님 답변 감사합니다 !!!!

근데, 해볼려고 햇는데 Mean에 avg_a[j] 여기 변수에 배열이 안들어가지네요... 일반 더블형만 들어가지네요... ㅠㅠ

쥐샥

2016.08.04 14:49:01
*.209.123.125

제가 하고 싶은 것은 주파수 대 별로 Cap 값을 계측하고 있습니다. 이 과정을 계속 반복하는 것입니다. 주파수 step이 10이면 10개의 각기 다른 주파수 대에서 한번씩 측정하게 됩니다. 그러면 데이터가 10개 생성이 되고 이 10개의 데이터를 측정하는 것을 계속 반복하게 됩니다. 이렇게 됬을 때 각 반복 횟수마다 각각의 주파수 대역에서 추출한 데이터를 평균내야 됩니다 ㅠㅠ

문제는, 첫번째반복 구간에서는 평균낼 데이터가 없으므로 원래 데이터를 뽑아내면되는데, 2번째 반복부터 평균내서 하나 뽑아내고 3번째도 3개의 데이터 평균내서 하나 뽑아내고, 4번째. 4개의 데이터 평균내서 하나 뽑아주고 .이런 식으로 각각 반복할때마다 평균을 내서 하나씩 데이터를 저장해야 됩니다 ㅠㅠ

ex)반복횟수 10번 , 1kHz~10Khz 주파수대역에서 1kHz씩 높여가면서 측정.. data 10개  이것으로 가정을 하면,

1khz~10khz 까지 측정을 10번 하게 됩니다. 이 과정을 10번 반복하게 되는데, 이랬을 때

1kHz 대역에서 반복한 것을 평균내서 1개씩 데이터를 뽑아내게 되고, 이렇게 10kHz까지 각 구간별로 데이터를 획득.

10번을 반복하므로 총 10개의 평균 값이 존재해야됩니다.

1번반복 ->평균값이 없으므로 원래 데이터 출력

2번반복 ->1,2 반복한 데이터 ,각 주파수 대별로 모아서 평균내서 데이터 출력, 1KHz는 1kHz 끼리. 2kHz는 2Khz 끼리 .......

3번반복 -> 1,2,3번 반복한 데이터 각 주파수 대별로 모아서 평균내서 데이터 출력 1KHz는 1kHz 끼리. 2kHz는 2Khz 끼리 .......

4번박복 -> 1,2,3,4번 반복한 데이터를 각각의 주파수 대별로 모아서 평균. 데이터 출력 . 1KHz는 1kHz 끼리. 2kHz는 2Khz 끼리...

 

......

 

 

총 10번반복.

1khz~10khz 구간의 데이터를 출력하는 것을 10번 반복한다 하면, 각 반복구간마다 평균내서 그때 그때 데이터를 다 저장할려고 합니다....

이렇게 할 수 있을까요? 미치겠네요

------------------------------------------------------------------------------------------------------------------

야리싸내 님께서 말씀해주신 코드를 이용하며 1번데이터는 1번끼리 묶어서 평균내서 하나씩 출력 되는데, 한번만 출력하고 끝나네요 ㅠㅠ 각각의 ch로 예를 들어주셨는데 각 ch마다 다 데이터가 나와야 되는데 1번ch만 데이터가 출력되고 말아버리네요 ㅠㅠ

야리싸내

2016.08.04 16:24:05
*.83.37.21

아 씰수 했네요...

저기위에 있는 Mean에는 배열이 안들어 가지는 거 맞습니다.

그래서 avg_a[j]  가 아니라 &avg_a[j]로 해주세요...

Mean(a[j],n,&avg_a[j]);

쥐샥

2016.08.04 17:26:45
*.209.123.125

와......... 진짜 딱 제가 원하던 데이터 값이 넘어오는걸 방금 확인했습니다 ㅠㅠ

몇날 몇일 고생한건데.. 정말 감사합니다 ㅠㅠ

진짜 이 기분을 어떻게 표현해야될지 모르겠네요 ㅋㅋ 감사합니다!!

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 파일(특히 그림파일)을 올리실 때의 유의사항 운영자 2004-07-16 98994
1597 'Error Code -94' 해결방법이... [2] 요돌이 2017-10-10 114
1596 cvi 에서 cmd창 없애는 방법 [2] 김승준 2017-09-11 153
1595 시리얼 통신 crc, checksum 계산기 file 하이루 2017-09-04 1025
1594 USB 연결되었을때 어떻게 확인하나요? file [1] 루키니아 2017-07-03 185
1593 외부 장치 검색하는 함수 조커 2017-02-20 135
1592 탭(tab)페이지 관련 질문드립니다. [2] cvi초보! 2017-01-26 137
1591 문자열 변환 관련. [3] 요돌이 2016-12-17 171
1590 폴더내의 파일 탐색 명령어 [2] 조커 2016-12-14 85
1589 안녕하세요 이미지 캡처 관련 질문드립니다. [5] cvi초보! 2016-12-02 148
1588 UIR 멈춤현상 관련. [1] 요돌이 2016-11-28 101
1587 win10에서 실행종료시...FATAL RUN-TIME ERROR file [6] 루키니아 2016-08-31 645
1586 패널 자체를 배열선언이 가능할까요??? (조언급구) file [2] 레몬자몽 2016-08-23 290
1585 vison 관련 문의 입니다. ds4okv 2016-08-20 75
1584 Excel 병합에 관한건데요... [2] 루키니아 2016-08-18 174
1583 전처리기(Preprocessor)를 이용해서 컨트롤을 숨길 수 있나요? [2] 레몬자몽 2016-08-09 136
1582 FileSelectPopup의 오류가.... [4] 야리싸내 2016-08-04 130
» 2차원배열 때문에 미치겠습니다 ㅠㅠ [5] 쥐샥 2016-08-03 141
1580 정수와 실수의 구분에 대해 질문드립니다 [2] 워나리 2016-07-26 748
1579 Numeric Control에 double타입일 경우 a와 f가 입력이 되는 현상 file [2] 레몬자몽 2016-07-22 575
1578 테이블컨트롤(Table Control) Insert시 역순으로 넣을 수 있는지 여부 [2] 레몬자몽 2016-07-19 663