我具有矩阵A=(n,m)
和我需要逐个并且如果列的元素的总和为大于阈值来扫描它的列,把柱到一个新的矩阵B=(n,?)
。动态数据附加在尽可能少的回路尽可能
A=[1 2 3
3 1 1
4 2 8]
threshold=6
而作为结果:
B=[1 3
3 1
4 8]
很显然,我不知道有多少列B
,因此在第一循环中,我检查元素之和在一列,那么如果该值大于阈值I,重复将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 2012-07-24 11:50:54
例子?我的代码必须包装在一个mex文件(matlab)中。 – 2012-07-24 12:37:10
我没有(没有MATLAB的经验)。这可能是您想要添加到原始问题的详细信息。 – Ashe 2012-07-24 13:17:43