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;
}
相关推荐
♛识尔如昼♛16 分钟前
C 基础(15) - 位操作
c语言
念恒1230625 分钟前
进程控制---进程程序替换
linux·c语言
南宫萧幕37 分钟前
车辆能量管理进阶:从前沿算法 (VMD-PPO-DBO) 机制解析到 MPC 工程建模
人工智能·算法·matlab·simulink·控制
三品吉他手会点灯42 分钟前
STM32 VSCode 开发-C语言程序运行后,终端中文乱码
c语言·ide·笔记·vscode·stm32·学习·编辑器
彷徨而立1 小时前
【C/C++】在头文件中定义全局变量的方法
c语言·开发语言·c++
我不是懒洋洋1 小时前
手写一个跳表:从原理到Redis级实现
c语言
小龙报1 小时前
【数据结构与算法】一文拿捏链式二叉树:遍历 + 统计 + 层序 + 完全树
java·c语言·开发语言·c++·人工智能·语言模型·visual studio
做cv的小昊1 小时前
【TJU】研究生应用统计学课程笔记(5)——第二章 参数估计(2.3 C-R不等式)
c语言·笔记·线性代数·机器学习·数学建模·r语言·概率论
IT猿手1 小时前
多无人机动态避障路径规划研究:基于壁虎优化算法GJA的多无人机动态避障路径规划研究(可以自定义无人机数量及起始点),MATLAB代码
算法·matlab·无人机
listhi5202 小时前
MATLAB电力系统加权最小二乘法(WLS)状态估计
算法·matlab·最小二乘法