Matlab内置函数讲解,以及如何转换成对应的C语言①

前言:

matlab是一个科研利器,通过该软件可以实现很多科研工作者想实现的功能。例如:软件仿真、数学计算、算法仿真。。。很多。(有句话不是说除了不能生孩子啥都可以干,这里我也没有验证过前者不知道可行不,哈哈开个玩笑!)因为涉及到的知识面太多,我就分章节重点讲其中的某些部分。

重心就是对内置函数做出讲解,同时将内置函数通过c语言的形式表达出来,我这里主要是自己工作过程中自己遇到的问题,在这里进行记录,希望可以帮到有需要的小伙伴。自己水平也是有限,写的不好,或者算法实现不是最优解,也希望不要喷我😊

sort函数

官方对它的解释是:        sort        对数组元素排序

官方的语法有五个,我只讲最常用的三个:

B = sort(A)
B = sort(A,dim)
[B,I] = sort(___)
B = sort(A) 
B = sort(A) 按升序对 A 的元素进行排序。
如果 A 是向量,则 sort(A) 对向量元素进行排序。
如果 A 是矩阵,则 sort(A) 会将 A 的列视为向量并对每列进行排序。 
如果 A 是多维数组,则 sort(A) 沿大小不等于 1 的第一个数组维度计算,并将这些元素视为向量。

官方例程如下:

创建一个行向量,并按升序对其元素排序。

A = [9 0 -7 5 3 8 -10 4 2];
B = sort(A)
B = 1×9
   -10    -7     0     2     3     4     5     8     9

解释:这里创建了一个一维横向数组,然后把数组A传递到sort函数中输出B,得到是一个新的数组,实际上做的工作是将原有的数组进行从小到大进行有序排列

如何进行C语言的算法转换
#include <stdio.h>

int main(void) {
    //算法部分
   int A[9] = {9,0,-7,5,3,8,-10,4,2};//按照官方的例程定义数组变量
   int c = 0;   //定义临时变量用于存储临时数据,作为中转站
    for(int i=0;i<9;i++){
        for(int j=i+1;j<9;j++){
            if(A[i] > A[j]){
                c = A[i];
                A[i] = A[j];
                A[j] = c;
            }
        }
    }
    for(int i=0;i<9;i++){
                printf("%d\t",A[i]);
    }
    return 0;
}
C:\Users\xiaoqian\CLionProjects\untitled9\cmake-build-debug\untitled9.exe
-10     -7      0       2       3       4       5       8       9
进程已结束,退出代码为 0
B = sort(A,dim)
B = sort(A,dim) 返回 A 沿维度 dim 的排序元素。例如,如果 A 是一个矩阵,则 sort(A,2) 对每行中的元素进行排序。

官方例程如下:

创建一个矩阵,并按升序对每一行排序。
A = [3 6 5; 7 -2 4; 1 0 -9]
A = 3×3
     3     6     5
     7    -2     4
     1     0    -9
B = sort(A,2)
B = 3×3
     3     5     6
    -2     4     7
    -9     0     1

解释:这里创建了一个2x2的矩阵A,通俗讲就是2x2数组,通过sort函数进行计算,输出一个新的2x2数组B,这里主要进行的算法计算是,将每一行的从小到大进行排序。注意:B = sort(A,2),这里的2是维度的意思,如果填1就是对一列进行排序,填2对行进行排序。

如何进行C语言的算法转换
#include <stdio.h>

int main(void) {

    //按照官方的例程定义数组变量
    int A[3][3] = {{3,6,5},{7,-2,4},{1,0,-9}};
    //定义临时变量用于存储临时数据,作为中转站
    int c = 0; 
    for(int k=0;k<3;k++){
        for(int i=0;i<3;i++){
            for(int j=i+1;j<3;j++){
                if(A[k][i] > A[k][j]){
                    c = A[k][i];
                    A[k][i] = A[k][j];
                    A[k][j] = c;
                }
            }
        }
    }
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            printf("%d\t",A[i][j]);
        }
        printf("\n");
    }
    return 0;
}
C:\Users\xiaoqian\CLionProjects\untitled9\cmake-build-debug\untitled9.exe
3       5       6
-2      4       7
-9      0       1

进程已结束,退出代码为 0

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
将巴特沃斯滤波器转换成C语言并在CCS中运行需要以下步骤: 1. 首先,确保你已经安装好MATLAB和CCS。MATLAB用于滤波器设计和算法验证,CCS用于将算法转换成可在嵌入式系统中运行的C代码。 2. 在MATLAB中设计和测试你的巴特沃斯滤波器。使用MATLAB内置的滤波器设计工具对滤波器进行设计、模拟和优化,以满足你的滤波需求。 3. 导出MATLAB中的滤波器设计结果。在滤波器设计完毕后,将设计的滤波器传递给MATLAB函数(如`filterDesign`)并将其导出为C代码。 4. 在CCS中新建一个项目。打开CCS,然后创建一个新项目,并选择对应的目标硬件平台。 5. 将导出的C代码添加到CCS项目中。在CCS项目中,将导出的C代码文件添加到源文件目录中,并在主函数中引用这些文件。 6. 在CCS中配置编译选项。在CCS中,设置适当的编译选项以确保滤波器代码正确地编译并生成可运行于嵌入式系统的二进制文件。 7. 构建和下载程序到目标硬件。通过CCS编译、构建和下载代码到目标硬件平台。确认下载成功后,你的巴特沃斯滤波器算法将在硬件上运行。 8. 在CCS中进行调试和优化。使用CCS的调试工具,可以对滤波器算法进行运行时的调试和性能优化。 注意:C语言MATLAB具有不同的语法和函数库。在将滤波器从MATLAB换到C语言时,要注意语法换、函数替换和库的适配。还要考虑在目标硬件平台上的资源限制和性能需求,进行相应的优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会倒的鸡蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值