自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Chilling的博客

研究僧小白一枚

  • 博客(56)
  • 收藏
  • 关注

原创 Simulink里的数据利用plot画图出来(to workspace 篇)

两种办法:1.利用scope,这在前面一个blog已经讲到了matlab里scope图像转到plot2.利用to workspace模块。其实和第一种方式差不多。首先我们要命名我们需要保存到workspace里的变量的名称,然后保存形式改为structure with time画图时代码:figureplot(Ug.time,Ug.signals.values,'LineWidth'...

2020-03-03 20:43:29 38471 11

原创 MATLAB figure图像处理以及simulink仿真里示波器图像处理

、我们使用Matlab绘制出数据的各种图形需要保存的时候,不少同学是直接用屏幕截图的办法来做的,但这样出来的图并不清晰,不便于后续应用和处理,并且往往不符合发表论文的要求,很多论文是要求用 .eps 格式的图片的。实际上,我们可以有下面两种更好的处理方法:(1)在论文里插入图片在Matlab的Figure窗口,点击菜单栏的Edit,选择Copy Figure,然后转到你的文档界面,把光标放到需...

2020-02-28 06:46:57 6151

原创 matlab里scope图像转到plot

记录几个常用的command,用在scope里的数据转到plot里画图:首先在scope里要设置一下,设置方式可以是array或者structure with time先说一下structure with time的形式,这个我最常用。plot(ScopeData8.time,ScopeData8.signals.values) %这个command可以直接画图,scopedata...

2019-03-14 20:20:34 18652 11

原创 函数指针(实例)

函数指针用法,实例如下:#include <stdio.h>#include <stdlib.h>#define FUNC_NUMBER 3int SumTwoNumbers(int x, int y) // 函数1{ return (x + y);}int MultiTwoNumbers(int x, int y) // 函数2{ return (x * y);}int DiviTwoNumbers(int x, int y)

2021-03-16 18:39:38 786

原创 C语言常用库函数

sizeofsizeof准确的来讲不是一个库函数,而是一个单目运算符。它的参数可以是数组、指针、类型、对象、函数等,用来计算一块内存的大小。如果是字符串,则用sizeof的时候计算结果是包含结束符‘\0’的,因为结束符也是占用空间的。sizeof是在编译的时候就计算好了缓冲区的长度,因此不能拿来计算和返回动态分配的内存大小。用例如下:#include "stdio.h"#include "string.h"int main(void){ int arr[10] = {0};

2021-03-15 02:36:17 1360 2

原创 临界导通模式下PFC特性分析

临界导通模式,即CRM模式时,PFC开关频率特性分析。目录公式基本特性随时间变化随功率变化随输入电压变化:代码公式此时有:Ton:Toff:周期T:开关频率fs:输入电流峰值:基本特性随时间变化瞬时电压下开关频率变化曲线:图中为直观显示,输入电压放大200倍。可以看出,在半个周期内,开关频率先减小,后增大。在输入电压过零附近开关频率最大,在输入电压最大时开关频率最小。瞬时电压下toff变化曲线:为直观显示,关断时间toff单位为us,且放大5倍。从图中可以看出,输入

2021-02-06 15:18:01 2989

原创 strlen和sizeof的区别

记录·一个在计算字符串大小的时候遇到的一个坑。如下代码:int numJewelsInStones(char J[], char S[]){ int cnt = 0; int temp = strlen(S); int temp1 = strlen(J); for (int i = 0; i < strlen(S); i++) { // 使用sizeof(S) - 1 替代strle(S)的时候会报错 for (int j = 0; j

2020-10-19 01:04:44 176

原创 C语言 常用排序算法(附代码)

主要记录一些我常用到的排序算法,没用到的暂时不记录。qsort库函数qsort函数是C语言中一个快速排序的标准库函数,在stdlib.h中声名,其用法为:void qsort(void *base, int nelem, unsigned int width, int ( * pfCompare)( const void *, const void *));其中:base为待排序数组的起始地址,即数组名。nelem为待排序数组个数,如果知道元素为N个就写N,如果不知道就sizeof(arr)/

2020-08-21 21:29:05 2246

原创 大数阶乘

代码如下:#define Max 1000//N的阶乘;void Factorial(int n){ int i = 0, j = 0; int result; //进位 int c = 0; // j进位 int arr[Max] = {0}; arr[0] = 1; for (i = 2; i <= n; i++) { // 数组的每一位依次乘i,i从2到n;

2020-08-17 09:13:38 126

原创 C语言判断是否为素数(质数)

三个程序,判断一个数是否为素数,运算量依次递减。简单粗暴//函数->判断素数bool IsPrime(int num){ for (int i = 2; i < num; i++) { if (num % i == 0) return 0; } return 1;}int main(){ int n = 1234567; if (IsPrime(n)) { printf("YES\n"); } else { printf("NO\n"); }

2020-08-13 20:23:37 11694

原创 测试判断素数函数运行时间(C语言)

一段测试C语言程序运行时间的方法,程序如下://测试程序运行时间#include<stdio.h>#include<stdlib.h>#include<time.h>clock_t TimeStart, TimeEnd;double caltime;#define N 100000//函数->判断素数bool IsPrime(int num){ for (int i = 2; i < num; i++) { if (num % i

2020-08-13 20:01:22 437

原创 C语言指针学习记录

C语言指针学习记录1.基本定义1.1指针1.2指针变量新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入1.基本定义1.1指针将变量的地址形象化的称为指针。对程序进行编译的时候,系统会自动给变量分配内存单元。因此,我们

2020-07-27 09:26:21 158

原创 MATLAB数据拟合(附代码)

MATLAB自带了一些基于幂函数的拟合方式,这个blog记录的是按照任意指定函数形式进行拟合; 代码附上,自己摸索。本次拟合是拟合一个给定的函数形式,其中带有位置参数a和b。clc;clear;% the first one;R=[0.68 0.805 0.863 0.893 0.9122 0.916];x=[1.07 2.24 3.86 5.91 8.5 11.5];y=R./(...

2020-04-18 14:26:34 7499 1

原创 定积分以及变积分上限函数(附代码)

来自一个朋友的问题,题目如图。 无论是积分还是变积分上限函数,都是利用int函数来实现。用法:int(f,x,xmin,xmax)其实f是被积函数,可以是函数或者矩阵。其实MATLAB在处理数据的时候,数或者矩阵都是一样的。x是被积函数的变量,xmin和xmax分别是积分上限和积分下限。代码如下:clc;clear;T=1/20e3;A=[1 0;0 1];B=[1 0;...

2020-03-28 21:30:03 7459

原创 一阶低通滤波器的数字实现

关于一阶低通滤波器这里就不再赘述了,讲的帖子也挺多,这里记录一下一阶低通滤波器的传递函数与数字实现之间的系数转换。一阶低通滤波器的传递函数常见为:其中Tf为RC,并且有:其中fwres为截止频率。常用的数字滤波器形式为:y(k)= (1-a)y(k-1)+ax(k)将传递函数用后向差分离散化,可得到:对比两个式子可以看出:而一般T<<Tf,因此上式可以简化为:...

2020-03-03 10:50:46 4918

原创 电力电子控制器 PID 参数的几种调试方法

https://mp.weixin.qq.com/s/AqQOFVvJmt0r9_PHOsDrjA

2020-02-10 16:39:51 1434

原创 数据结构

一些基础知识:double *p;double x = 1.1;p = &x;1.一个字节是8位,一个字节一个地址;但是p存放的是一个地址了,一般存放的是首字节的地址。2.无论指针变量指向的变量占几个字节,指针变量都是占四个字节。结构体:1.结构体是重新定义了一个数据类型,把同类的都放在了一起。eg:struct Student { int sid; char n...

2020-02-08 17:03:06 148

原创 根据bode图判断系统稳定性

定性的分析系统的性能的时候,通常将bode图分为高、中、低三个频段,频段的分割也是相对的,但是不影响具体分析。1、中频段一般是比较关键的,涉及到系统能否稳定等问题。比如如果中频段是-20dB衰减,那么我们希望中频段能够有较大带宽,以保证系统稳定性。2、截止频率或被称之为剪切频率,wc越高,则系统快速性越好。3、低频段希望保证较高的增益,以便能精准的跟踪被控量,即稳态精度好。4、高频衰减的越...

2020-02-05 23:51:40 19419

原创 sourceinsight函数跳转问题

遇到一个问题,有些函数明明在文件里有,但是在sourceinsight的函数栏看不到,或者点击函数应该跳转到函数定义处的地方去,结果跳转到了函数申明的地方,用起来很不方便。今天查了一下,原因是有些函数前面加了:#ifdef _ADCISR_RAM___attribute__((ramfunc))#endif这是让该函数加载到RAM上去。我们的sourceinsight默认的是没有识别_...

2019-12-15 12:08:58 5025

原创 C语言常用算法归纳

记录一些常用的算法,包括实际应用的。首先是冒泡排序。这个一般在一些滤波算法的时候可能会用到。#include<stdio.h>int main(){ #define n 10 int a[n]; int i,j,k,t; for (i = 0;i < n; i++) { scanf("%d",&a[...

2019-12-05 22:21:55 2301

原创 C语言不允许对全局变量在函数外进行赋值

记录一段代码。#include<stdio.h>void PRINTFZIMU(int ch);struct ZIMU { int a; int b;};struct ZIMU zimu[3];zimu[0].a = 1;int main(){ zimu[0].a = 1; PRINTFZIMU(0); return 0;}...

2019-12-05 20:58:56 2208

原创 移相器(软件实现)

主要记录一下软件实现的移相器。理论方面:然后这篇帖子:https://wenku.baidu.com/view/6cb03af1551810a6f52486dc.html下面记录软件实现:实现90°移相。90°移相器传递函数为:tustin变换后差分方程为:其中,c为:...

2019-11-21 09:24:32 1931 2

原创 陷波器及其算法(基于C语言)

首先,陷波器的传递函数是:利用matlab对其进行离散化,tustin变换。syms w0 s Ts z xi % 定义符号变量G1 =(s^2+w0^2)/(s^2+2*w0*xi*s+w0^2) %传递函数sys_s2c = 2*(z-1)/Ts/(z+1)G2 = subs(G1,s,sys_s2c) %离散化 tustin变换G3 = colle...

2019-11-20 22:14:21 15126 17

原创 matlab 符号运算

在matlab里,进行符号运算。一般在用在离散化的时候用的比较多,关于离散化用符号运算,离散化的那个blog里有栗子。下面记录一写我自己常用到的符号运算的方法。建立符号变量和常量,一般用syms就可以。精度。精度可以用digits,vpa,和double。用法如下:digits(n)vpa(sys,n)double(sys)3.符号表达式的化简和替换;常用的有如下:函数co...

2019-11-20 09:00:36 653

原创 嵌入式小知识(纯积累)

一些关于项目过程中的想法和疑问,纯笔记记录,有不同看法的可以私信或者留言回复探讨。1.关于波特率传输数据的速率。比如说波特率如果是1200的话,一般在做数据传输的时候都会稍微计算一下传完这么多的数据需要多长时间,那就要看一下一秒钟传了多少数据。之前想的是一秒钟传输1200/8。(因为一个字节的数据8个bit)。后来工程师计算的时候一般都是除10。是因为一般数据传输之前都有起始位,后面还在终止位...

2019-11-08 14:13:15 421

原创 MATLAB/simulink中PID Tuner工具箱(APP)

https://mp.weixin.qq.com/s/-vbs2kSvszO3cXnfi66m1w

2019-10-21 19:47:41 23482 7

原创 MathWorks官方MATLAB/Simulink基础入门视频教程 笔记(控制系统)

内容:建模:建模的部分后面再摸索一下。控制算法设计:教程:

2019-10-14 08:43:08 1028

原创 MathWorks官方MATLAB/Simulink基础入门视频教程 笔记(信号处理与通信)

信号处理:建议使用内置模板。滤波器的设计:通信:

2019-10-13 21:45:08 534

原创 MathWorks官方MATLAB/Simulink基础入门视频教程 笔记(Simulink基础)

simulink基础:这一部分就不做记录了,建议初学者可以直接看视频,讲的很详细。还是只记录我不会的。仿真数据的保存和可视化:对于信号数据,可以点击数据线,可以显示该信号的值,当然,也可使用display等模块。simulation data inspector:突然发现宝藏:找到方法:然后在需要看的地方右键 log selected singles就会看到有wifi一样的...

2019-10-13 21:27:47 1724

原创 MathWorks官方MATLAB/Simulink基础入门视频教程 笔记(matlab基础)

该笔记记录的是自己在观看mathwork官方的matlab教程做的笔记,有需要详细了解的可以去mathwork看,或者联系我,我这里有下载下来的。中文讲解。笔记记录的笔记凌乱,只记录了部分对我有用的。1.matlab基础matlab矩阵计算:矩阵的元素的提取:A(j,k) 表示提取A矩阵的第j行第k列。x = A(2,end)第二行,最后一个。x = A(end,1)最后一行第一...

2019-10-13 19:55:49 1694

原创 自动控制原理理论以及matlab一些应用

仅做笔记。画bodeG = tf([0.001,20.01],[1,20.01])bode(G) %画bode;并且可以通过双击bode图讲单位为rad/s改为Hzmargin(G) %标注bode相位裕度和增益裕度

2019-08-31 10:13:58 802

原创 连续传递函数离散化

s变换到z变换:command:c2d作用:离散化;其中离散化的方法又有很多:前向差分;后向差分;tustin;零极点匹配;脉冲响应;阶跃响应;下面先说一说各种离散方式的特点:前向差分:方法是用一阶前向差分近似替代微分,用矩形面积之和近似替代数值积分;特点是近似关系简单,稳态增益不变,但稳定性可能会改变,且一般不用此种方法。后向差分:和前向差分很相似,不过是用一阶后向差分来代替;特点...

2019-08-31 09:46:36 21280

原创 FIR滤波器的C语言实现

下面代码实现的是一个四阶的FIR滤波器:#define FILTER_LEN 5float h[FILTER_LEN] = {0.0625,0.25,0.375,0.25,0.0625};float fDelayLine[FILTER_LEN] = {0,0,0,0,0};void FIR_Filter(void){ int i; float ftemp; ftemp = 0;...

2019-08-04 09:19:48 4714 1

原创 记录贴----四页定时充放电时间段校验

目的:目前已经完成的是四页充放电时间及其功率,每一页都是分别由‘充电起始时间,充电结束时间,充电功率,放电起始时间,放电结束时间,放电功率’。由于充电时间段和放电放电时间段之间不能有交叉,因此需要校验设置的时间是否合规。以前代码只是设置了一页,因此只需要对一页的充电时间段和放电时间段校验即可。现在扩展到四页,需要对该页,以及页和页之间的时间段之间相互比较。代码及其注释如下:UINT8 In...

2019-07-21 11:19:50 149

原创 C语言学习---小知识点总结

1.将一个16位的变量存放在两个8位的变量中。buf[0] = (UINT8)(Bat_Information.BatType >> 8);buf[1] = (UINT8)(Bat_Information.BatType & 0X00ff);其中,Bat_Information.BatType位16位,buf[1]为8位。前面的强制转换也可以省略。反过来类似。...

2019-07-12 09:03:20 237

转载 一文看懂电压电流的超前与滞后

有时候总是忘了,mark一下,看下面这个链接的动态图就很一目了然了。https://www.diangon.com/m431121.html

2019-06-24 14:21:44 5087

转载 sourceinsight使用教程

这个还比较详细,mark一下。https://blog.csdn.net/u014775175/article/details/66478628

2019-06-24 10:14:46 8670

原创 C语言学习---实现几个优先级的几种方法

需求是针对不同的控制变量实现不同的响应需求,但是存在一个优先级的问题。如果是只满足0 > 5 > 6 > 7 > 8的话,可以用continue。注意运用continue和break的区别。break用于完全结束一个循环,跳出循环体执行循环后面的语句。continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,bre...

2019-06-19 22:37:56 2326

原创 C语言之三目运算符---学习笔记

首先从一段代码说起:if(Cnt_Worktostandby >((g_SaftyConfig.bit.FreChgDisPowerEnable||g_SaftyConfig.bit.VGridDeratingChargeEnable)?45000:1500))这里面就涉及到一个很基本的C语言的三目运算。分解开来就是如果g_SaftyConfig.bit.FreChgDisPowe...

2019-05-29 21:44:10 4839

原创 移位操作与乘除法的关系:

在DSP编程中,有很多时候会遇到要除10或者其他乘除法的操作。这时候就可以用移位的操作来实现了。先备忘一个优秀博文,下面的大部分大家可以去他们的博文去看,我下面的主体也是参考他们的博文的。https://blog.csdn.net/yehaibin/article/details/53639293https://blog.csdn.net/newbird105/article/deta...

2019-05-25 16:05:25 4155 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除