MATLAB中circshift函数转化为C语言

背景

有项目算法使用matlab中circshift函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。

MATLAB中circshift简单介绍

circshift是循环移位函数。可以使用于数组和矩阵元素的循环移位。

当A是数组

B=circshift(A,p);如果p是正数则实现A从左到右的循环移位。如果p是负数则实现A从右到左的循环移位。

当A是矩阵

B=circshift(A,[p,0]);如果p是正数则实现A以行为单位,从上到下的循环移位。如果p是负数则实现从下到上的循环移位。

B=circshift(A,[0,p]);如果p是正数则实现A以列为单位,从左到右的循环移位。如果p是负数则实现从右到左的循环移位。

实际maltab中使用如下代码所示,其中z为96000x1列向量

x4 = circshift(z,[1,0]);

测试MATLAB代码如下

Matlab 复制代码
Z = [1 2 3 4 5 6]
Z = Z'
X = circshift(Z,[1,0])

运行结果如下图所示

Matlab 复制代码
>> clear
>> Z = [1 2 3 4 5 6]

Z =

     1     2     3     4     5     6

>> Z = Z'

Z =

     1
     2
     3
     4
     5
     6

>> X = circshift(Z,[1,0])

X =

     6
     1
     2
     3
     4
     5

>>

结果图片如下

C语言实现

代码如下所示

cpp 复制代码
int circshift_1_0(unsigned char *psrc, unsigned char *pdst, unsigned int len) {
    // unsigned char* ptr_tmp = (unsigned char*)malloc(sizeof(unsigned char) * len);
    // if(ptr_tmp == NULL)
    // {
    //     perror("fun_name");
    //     return -1;
    // }
    pdst[0] = psrc[len - 1];
    for(int i = 1; i < len; i++){
        pdst[i] = psrc[i - 1];
    }

    // free(ptr_tmp);
    // ptr_tmp = NULL;


    return 0;
}
相关推荐
祈安_2 天前
C语言内存函数
c语言·后端
feifeigo1234 天前
matlab画图工具
开发语言·matlab
norlan_jame4 天前
C-PHY与D-PHY差异
c语言·开发语言
czy87874754 天前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
m0_531237174 天前
C语言-数组练习进阶
c语言·开发语言·算法
Gofarlic_oms14 天前
避免Kisssoft高级分析模块过度采购的科学评估方法
大数据·linux·运维·人工智能·matlab
rit84324994 天前
全变分正则化图像去噪的MATLAB实现
开发语言·matlab
Evand J4 天前
通过matlab实现机器学习的小项目示例(鸢尾花分类)
机器学习·支持向量机·matlab
bu_shuo4 天前
MATLAB命令行窗口中的字体放大操作
matlab·命令行
micro_xx4 天前
Matlab 有限元分析三维悬臂梁变形
前端·数据库·matlab