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;
}
相关推荐
楼台的春风3 小时前
【GPIO详解及实践示例】
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式
ll7788114 小时前
LeetCode每日精进:20.有效的括号
c语言·开发语言·算法·leetcode·职场和发展
coding_rui6 小时前
链表(C语言版)
c语言·数据结构·链表
开开又心心的学嵌入式7 小时前
C语言——指针进阶应用
c语言·开发语言
coding_rui7 小时前
哈希表(C语言版)
c语言·数据结构·散列表
开开又心心的学嵌入式7 小时前
C语言——指针基础知识
c语言·开发语言
coding_rui7 小时前
二叉树(C语言版)
c语言·数据结构
studyer_domi8 小时前
matlab质子磁力仪传感器线圈参数绘图
人工智能·matlab
aaasssdddd969 小时前
鸡兔同笼问题
c语言·线性代数·算法·矩阵·解释器
就爱学编程9 小时前
重生之我在异世界学编程之C语言:深入预处理篇(上)
c语言·开发语言