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;
}
相关推荐
rit84324994 小时前
基于MATLAB的模糊图像复原
开发语言·matlab
程序员老舅6 小时前
干货|腾讯 Linux C/C++ 后端开发岗面试
linux·c语言·c++·编程·大厂面试题
jghhh017 小时前
基于MATLAB的FY-3B MWRI数据处理
matlab
gihigo19988 小时前
基于MATLAB的Excel文件批量读取与循环处理
matlab·excel
qiuiuiu4139 小时前
正点原子RK3568学习日志-编译第一个驱动程序helloworld
linux·c语言·开发语言·单片机
爱吃橘的橘猫9 小时前
嵌入式系统与嵌入式 C 语言(2)
c语言·算法·嵌入式
机器学习之心12 小时前
PINN物理信息神经网络风电功率预测!引入物理先验知识嵌入学习的风电功率预测新范式!Matlab实现
神经网络·学习·matlab·风电功率预测·物理信息神经网络
vicky051713 小时前
用栈的思想判断回文字符串(C语言)
c语言·开发语言·算法
woshigaowei514614 小时前
VS(QT)调用Matlab函数的方法
qt·matlab·vs
yanqiaofanhua14 小时前
C语言自学--预处理详解
c语言·开发语言