나는 행렬 A=(n,m)
을 가지고 있으며 열을 하나씩 스캔해야하며 열 요소의 합계가 임계 값보다 큰 경우 열을 새 행렬에 넣어야합니다 B=(n,?)
. 분명히가능한 한 적은 수의 루프에 데이터를 동적으로 추가
B=[1 3
3 1
4 8]
, 내가 따라서 첫 번째 루프에서, 나는 그 값이 경우 열의 요소의 합을 확인 B
에 얼마나 많은 열을 모르는 :
A=[1 2 3
3 1 1
4 2 8]
threshold=6
그리고 그 결과로
가 임계 값보다 큰 경우B
에 열을 추가하는 루프를
realloc
으로 반복합니다.
okcol=0;
double *B = malloc(n*sizeof(double));
for (col=0;col<m;col++){
sum=0;
for (row=0;row<n;row++){
sum+=A[row+col*n];
if(sum>threshold){
B = realloc(B, (okcol+1)*n*sizeof(double));
for (row2=0;row2<n;row2++){
B [okcol*n+row2] = A[row2+col*n];
}
okcol++;
}
}
}
자동으로 B
에 요소를 추가하고 합이 임계 값보다 작은 경우를 "삭제"하는 방법이 있습니까? 즉, 나는 마지막 루프를 피하고 싶다.
이 모든 작업을 직접하고 기존 라이브러리를 활용하지 않는 이유가 있습니까? – Ashe
예? 내 코드는 mex 파일 (matlab)에 래핑되어야합니다. –
나는 아무것도 가지고 있지 않다 (MATLAB에 대한 경험이 없다). 아마도 원래 질문에 추가하고 싶은 세부 사항 일 것입니다. – Ashe