📄 vector.c
字号:
#include "spiht.h"
#include "spihtdecode.h"
QccVector QccVectorAlloc(int vector_dimension)
{
QccVector vector;
if (vector_dimension <= 0)
return(NULL);
if ((vector = (QccVector)calloc(vector_dimension, sizeof(double))) == NULL)
QccErrorAddMessage("(QccVectorAlloc): Error allocating memory");
return(vector);
}
void QccVectorFree(QccVector vector)
{
if (vector != NULL)
free(vector);
}
int QccVectorZero(QccVector vector, int vector_dimension)
{
int component;
if ((vector == NULL) || (vector_dimension <= 0))
return(0);
for (component = 0; component < vector_dimension; component++)
vector[component] = 0;
return(0);
}
int QccVectorAdd(QccVector vector1, const QccVector vector2,
int vector_dimension)
{
int component;
if ((vector1 == NULL) || (vector2 == NULL) || (vector_dimension <= 0))
return(0);
for (component = 0; component < vector_dimension; component++)
vector1[component] += vector2[component];
return(0);
}
int QccVectorCopy(QccVector vector1, const QccVector vector2,
int vector_dimension)
{
int component;
if ((vector1 == NULL) || (vector2 == NULL) || (vector_dimension <= 0))
return(0);
for (component = 0; component < vector_dimension; component++)
vector1[component] = vector2[component];
return(0);
}
int QccVectorSubsample(const QccVector input_signal,
int input_length,
QccVector output_signal,
int output_length,
int sampling_flag)
{
int index;
if (input_signal == NULL)
return(0);
if (output_signal == NULL)
return(0);
switch (sampling_flag)
{
case QCCVECTOR_EVEN:
for (index = 0;
(index < output_length) && ((index * 2) < input_length);
index++)
output_signal[index] = input_signal[index * 2];
break;
case QCCVECTOR_ODD:
for (index = 0;
(index < output_length) && ((index * 2 + 1) < input_length);
index++)
output_signal[index] = input_signal[index * 2 + 1];
break;
default:
QccErrorAddMessage("(QccVectorSubsample): Undefined sampling (%d)",
sampling_flag);
return(1);
}
return(0);
}
int QccVectorUpsample(const QccVector input_signal,
int input_length,
QccVector output_signal,
int output_length,
int sampling_flag)
{
int index;
if (input_signal == NULL)
return(0);
if (output_signal == NULL)
return(0);
QccVectorZero(output_signal, output_length);
switch (sampling_flag)
{
case QCCVECTOR_EVEN:
for (index = 0;
(index < input_length) && ((index * 2) < output_length);
index++)
output_signal[index * 2] = input_signal[index];
break;
case QCCVECTOR_ODD:
for (index = 0;
(index < input_length) && ((index * 2 + 1) < output_length);
index++)
output_signal[index * 2 + 1] = input_signal[index];
break;
default:
QccErrorAddMessage("(QccVectorUpsample): Undefined sampling (%d)",
sampling_flag);
return(1);
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -