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;
}
相关推荐
机器学习之心37 分钟前
GA-SVR遗传算法优化支持向量机回归+SHAP分析+新数据预测,MATLAB代码
支持向量机·matlab·回归·shap分析·新数据预测·ga-svr·遗传算法优化支持向量机回归
阿杰嵌入式1 小时前
MATLAB MBD建模规范(MAB 5.0) 漫谈
matlab
AMoon丶1 小时前
C++基础-类、对象
java·linux·服务器·c语言·开发语言·jvm·c++
为搬砖记录1 小时前
杰理AC695N soundbox 3.1.2打开ble宏的编译bug
c语言·开发语言·单片机·bug
阿杰嵌入式2 小时前
MATLAB MAB 5.0建模规范专栏阅读-总目录
matlab
bubiyoushang8882 小时前
基于PSO的列车速度优化MATLAB实现
开发语言·人工智能·matlab
一叶落4382 小时前
【LeetCode 172】阶乘后的零(C语言详解 | 数学规律 + 对数时间复杂度)
c语言·数据结构·算法·leetcode·动态规划
自信150413057592 小时前
数据结构初阶——二叉树之——堆的实现
c语言·数据结构·算法
小茗的嵌入式学习日记2 小时前
基于IMX6ULL的车载中控系统
linux·c语言·qt
香水5只用六神3 小时前
【RTOS快速入门】05_动态_静态创建任务(2)
c语言·stm32·单片机·嵌入式硬件·freertos·rtos·嵌入式软件