iOS vDSP中的单矢量填充和清除
来源:互联网 发布:泉州旅游数据分析 编辑:程序博客网 时间:2024/06/15 15:56
矢量填充1 vDSP_vfill函数(float)
typedef unsigned long vDSP_Length;typedef long vDSP_Stride;
extern void vDSP_vfill( const float *__A, float *__C, vDSP_Stride __IA, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
公式:
举例:
注:传入的参数和数组给这个函数,注意数组越界问题。
float a[1],output[8]={0}; printf("input:\n"); *a = 5.0; printf("%f ",*a); vDSP_vfill(a, output,1, 8); printf("\noutput:\n"); for (int i=0; i<8; i++) { printf("%f ",output[i]); }
打印结果:
input:
5.000000
output:
5.000000 5.000000 5.000000 5.000000 5.000000 5.000000 5.000000 5.000000
5.000000
output:
5.000000 5.000000 5.000000 5.000000 5.000000 5.000000 5.000000 5.000000
修改函数参数如下:
vDSP_vfill(a, output,1, 4);
打印结果:
input:
5.000000
output:
5.000000 5.000000 5.000000 5.000000 0.000000 0.000000 0.000000 0.000000
5.000000
output:
5.000000 5.000000 5.000000 5.000000 0.000000 0.000000 0.000000 0.000000
修改函数参数如下:
vDSP_vfill(a, output,2, 4);
打印结果:
input:
5.000000
output:
5.000000 0.000000 5.000000 0.000000 5.000000 0.000000 5.000000 0.000000
5.000000
output:
5.000000 0.000000 5.000000 0.000000 5.000000 0.000000 5.000000 0.000000
修改函数参数如下:
vDSP_vfill(a, output,3, 4);
打印结果:
input:
5.000000
output:
5.000000 0.000000 0.000000 5.000000 0.000000 0.000000 5.000000 0.000000
5.000000
output:
5.000000 0.000000 0.000000 5.000000 0.000000 0.000000 5.000000 0.000000
矢量填充2 vDSP_vfillD函数 (double)
extern void vDSP_vfillD( const double *__A, double *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
矢量填充3 vDSP_vfilli函数 (int)
extern void vDSP_vfilli( const int *__A, int *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
矢量填充4 vDSP_zvfill函数 (复数float)
typedef struct DSPSplitComplex { float * __nonnull realp; float * __nonnull imagp;} DSPSplitComplex;
extern void vDSP_zvfill( const DSPSplitComplex *__A, const DSPSplitComplex *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
公式:
例子:
float ar[1]={1},ai[1]={2}; float outr[8]={0},outi[8]={0}; DSPSplitComplex a[1],output[1]; a[0].imagp = ai; a[0].realp = ar; output[0].imagp = outi; output[0].realp = outr; printf("input:\n"); printf("(%f)+(%f)i",a[0].realp[0],a[0].imagp[0]); vDSP_zvfill(a,output,1,8); printf("\noutput:\n"); for (int i=0; i<8; i++) { printf("(%f)+(%f)i\n",output[0].realp[i],output[0].imagp[i]); }
打印结果:
input:
(1.000000)+(2.000000)i
output:
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
output:
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
(1.000000)+(2.000000)i
修改函数参数如下:
vDSP_zvfill(a,output,1,4);
打印结果如下:
input:(1.000000)+(2.000000)ioutput:(1.000000)+(2.000000)i(1.000000)+(2.000000)i(1.000000)+(2.000000)i(1.000000)+(2.000000)i(0.000000)+(0.000000)i(0.000000)+(0.000000)i(0.000000)+(0.000000)i(0.000000)+(0.000000)i
修改函数参数如下:
vDSP_zvfill(a,output,2,4);
打印结果如下:
input:
(1.000000)+(2.000000)i
output:
(1.000000)+(2.000000)i
(0.000000)+(0.000000)i
(1.000000)+(2.000000)i
(0.000000)+(0.000000)i
(1.000000)+(2.000000)i
(0.000000)+(0.000000)i
(1.000000)+(2.000000)i
(0.000000)+(0.000000)i
(1.000000)+(2.000000)i
output:
(1.000000)+(2.000000)i
(0.000000)+(0.000000)i
(1.000000)+(2.000000)i
(0.000000)+(0.000000)i
(1.000000)+(2.000000)i
(0.000000)+(0.000000)i
(1.000000)+(2.000000)i
(0.000000)+(0.000000)i
矢量填充5 vDSP_zvfillD函数 (复数double)
typedef struct DSPDoubleSplitComplex { double * __nonnull realp; double * __nonnull imagp;} DSPDoubleSplitComplex;
extern void vDSP_zvfillD( const DSPDoubleSplitComplex *__A, const DSPDoubleSplitComplex *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
矢量清除6 vDSP_vclr函数 (float)
extern void vDSP_vclr( float *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
函数计算:
for (n = 0; n < N; ++n)
C[n] = 0;
C[n] = 0;
例子:
float input[8]; printf("input:\n"); for (int i=1; i<=8; i++) { input[i-1]=-i; printf("%f ",input[i-1]); } vDSP_vclr(input, 1, 8); printf("\noutput:\n"); for (int i=0; i<8; i++) { printf("%f ",input[i]); }
打印结果:
input:
-1.000000 -2.000000 -3.000000 -4.000000 -5.000000 -6.000000 -7.000000 -8.000000
output:
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
-1.000000 -2.000000 -3.000000 -4.000000 -5.000000 -6.000000 -7.000000 -8.000000
output:
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
修改函数参数如下:
vDSP_vclr(input, 1, 5);打印结果:
input:
-1.000000 -2.000000 -3.000000 -4.000000 -5.000000 -6.000000 -7.000000 -8.000000
output:
0.000000 0.000000 0.000000 0.000000 0.000000 -6.000000 -7.000000 -8.000000
-1.000000 -2.000000 -3.000000 -4.000000 -5.000000 -6.000000 -7.000000 -8.000000
output:
0.000000 0.000000 0.000000 0.000000 0.000000 -6.000000 -7.000000 -8.000000
矢量清除7 vDSP_vclrD函数 (double)
extern void vDSP_vclrD( double *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
祝您生活愉快!
0 0
- iOS vDSP中的单矢量填充和清除
- iOS vDSP中的单矢量相反
- iOS vDSP中的单矢量生成
- iOS vDSP中的单矢量平方
- iOS vDSP中的单矢量归一化、极坐标转换和单矢量转换为分贝等值
- iOS vDSP中的矢量绝对值
- iOS中的缓存计算和清除
- iOS中的缓存计算和清除(二)
- jQuery文本框默认值自动清除和填充的实现
- Vdsp(bf561)中的浮点运算(9):long double和float的比较
- iOS中的单例
- iOS中的单例
- iOS中的单例
- iOS中的单例
- iOS中的单例
- iOS数据缓存和清除
- ios中的单例模式和C++中的单例模式
- 关于simulin中的矢量mux模块应用和其它
- EL表达式 (详解)
- jdk 动态代理
- BZOJ 2038 莫队算法
- 编译链接的时候 有动态库和静态库 怎么指定她连静态库来着[不要连动态库]
- SpringMVC的各种参数绑定方式
- iOS vDSP中的单矢量填充和清除
- 总结系列--AndroidManifest.xml文件详解
- JAVA中的反射
- linuxrc
- thinkphp页面时间格式化
- [Machine Learning]--Ensemble Method
- 约瑟夫环问题
- ffmpeg + rtp介绍
- 轻量级的的视差引擎Parallax.js