当前位置: 首页 > news >正文

MATLAB——知识点备忘

最近在攻略ADC建模相关方面,由好多零碎的知识点,这里写个备忘录。

Matlab 判断一个数是否为整数

1. isinteger 函数

MATLAB中,可以使用 isinteger 函数来判断一个数是否为整数,例如:要判断x是否为整数可以采用以下代码

if isinteger(x)disp('x是整数')
elsedisp('x不是整数')
end

2. fix 或者 round 函数

 通过对变量x取整,然后再和原值对比,判断取整后的结果,如果等于原值,则为整数。

if x==fix(x)disp('x为整数')
endif x==round(x)disp('x为整数')
end

3. rem 函数

用求余函数 rem(x, 1) 来求,返回值0就是整数,返回值非0就是非整数

if rem(x, 1)==0disp('x为整数')
end

Matlab 判断一个数的数据类型

        在Matlab中,可以使用 class 函数来判断变量的数据类型。该函数返回变量的数据类型名称。例如,class(var) 可以给出变量var的数据类型。另外,还可以使用 isa 函数来判断一个变量是否属于某个特定的类别。该函数返回一个逻辑值,如果变量属于指定的类别,则返回1表示"真”,否则返回0表示“假”。在代码中,可以使用 class函数isa函数 来进行数据类型的判断和比较。

如何用matlab计算二进制加法

方法一:

Q:  比如两个二进制数,0010+1100=?
      如何matlab实现?
A:  二进制也好十进制也好都是一种表现形式,数据实际的值是不会因为你使用二进制还是十进制变化的
        其实正如上面的问答所说,进制不过是相互转换,加减法是与进制无关的。我们只需要知道加法、减法和乘2这类运算对于硬件来说比较简单就行了。在matlab仿真如果还需要先转化为二进制再计算,就绕远路了。
        例如要计算0010 + 1100,可以直接在matlab计算 2 + 12,再把结果14转化为二进制数即可。

方法二:

Matlab Case 语句

      单个的就如同C语言中的一样,不过在和switch使用的时候case后不用接 “:”

n = input('Enter a number: ');switch ncase -1disp('negative one')case 0disp('zero')case 1disp('positive one')otherwisedisp('other value')
end

Matlab 通过整除判断倍数

      可通过 fix 截尾取整进行判断,示例:判断一个数是否为5 的倍数

m=12;
if fix(m/5)==m/5
% 如果是5 的倍数,则输出为1
end

Matlab 计算倍数

        在Matlab中,可以通过使用趋于运算符(mod)来计算一个数是否是另一个数的倍数。如果一个数a是另一个数b的倍数,则 mod(b,a)==0
        例如,要判断一个数×是否是3的倍数,可以使用以下代码:

X=15; % 要判断的数
multiple=3; % 倍数if mod(x,multiple) == 0disp('x是multiple的倍数');
elsedisp('x不是multiple的倍数');
end

Matlab 中计算最小公倍数

        Matlab中计算最小公倍数的函数是 lcm ,使用方法如下:

lcm(x,y);% 示例代码
lcm(6,8) % 输出结果为 6和8的最小公倍数 24

        其中,x 和 y 是要计算最小公倍数的两个数。

Matlab 在工作区显示函数内的变量

        在通常情况下,matlab的工作区中不会显示函数内的变量。

方法一:以函数输出的形式定义希望输出的变量:
        这里的A、B、C 可以定义为结构体,好更方便的输出更多的变量。

function [A, B, C] = fucntion_name(D, E, F)
% 这里的A B C 可以定义为结构体,好更方便的输出更多的变量

方法二:使用 save  load 函数,具体方法为:
        这里会将 变量 保存在 文件名.mat 文件里,可省略 变量名 ,这样可以将当前所有变量存在 文件名.mat 文件里,load 时也可以省略 文件名。

save 变量名 文件名 load('文件名.mat', 变量名)

方法三:使用断点:

        可以在子程序内部设置断点,然后开始运行,当停在子程序时workspace即显示子程序变量。按F10即可进行单步调试。        

Matlab 控制数值精度(保留有效数字,小数点后几位)

方法一:vpa 函数 
        控制有效数数字位数:

digits(5); %定义精度
a=vpa(sqrt(2)); %a=1.4142% 或者单独使用 vpa
a=vpa(sqrt(2),5); %a=1.4142

方法二:roundn 函数
        可以用来控制小数点前后多少位,负数表示小数点后,正数表示小数点前。
        注意与 round 的区别。round 表示把小数往最接近的整数取整

a=roundn(sqrt(2),-4); %a=1.4142

Matlab 结构体的创建和使用

        对于有C语言基础的使用者,结构体这个词你可能很熟悉。
        与元胞(cell)类型一样,结构体也可以存储任意类型的数据。当然,它们也存在许多不同点。最大的不同点是,结构体是以不同名字的字段作为存储容器,每个字段都可以存储任意类型的数据。此外,若要构建结构体数组,则要求每个结构体的字段数目和字段名字必须相同。下面将讲述结构体数组,单个结构体也视为1x1的结构体数组。
1. 结构体的创建
       
接直接定义字段,对 结构体变量名.字段名 赋值(字段的命名规则和变量一样),并且像使用一般 Matlab 变量一样,不需要事先声明,支持动态扩充

% 单个结构体
Student.name = 'wangx';
Student.sex = 'Male';
Student.height = '170';% 多个结构体
Student(2).name = 'zhangsan';
Student(2).sex = 'Male';
Student(2).height = 172;

        或者使用函数 struct() 创建。调用格式struct(name1,data1,name2,data2....),注意这里的数据要用大括号括起来
        node = struct('name', {'xiezhh', 'heping'}, 'age',{31, 22})
        node(1).name

% 1x1的结构体数组
s1 = struct;            % 不含字段
s2 = struct('name', '李四', 'gender', 'male');% 1x2的结构体数组
s3 = struct('name', {'张三', '李四'}, 'gender', 'male');    % 通过元胞数组,来创建多结构体的结构体数组
s3
s3_1 = s3(1)
s3_2 = s3(2)

代码运行结果如下。注:函数的字段参数不能重复。因此,若要创建多结构体的结构体数组,必须使用元胞数组。

2. 结构体数组的访问
        结构体数组的访问很简单。这里不展示代码,以文字叙述。

  • 访问结构体数组中某个结构体的某个字段:先对结构体数组进行索引,得到待访问的结构体。再通过待访问的结构体.字段名获取该结构体的该字段的数据。此外,如果该字段的数据是一个数组,还可以对该数组进一步索引。
  • 访问结构体数组中所有结构体的某个字段:直接通过 结构体数组.字段名,结果相当于一个逗号间隔的式子:结构体1.字段名, 结构体2.字段名, 结构体3.字段名 ...

3. 结构体数组的拼接

结构体数组的拼接也很简单,和其它类型的拼接是一样的,这里不展示代码,只叙述它要遵循的纬度规则。

  • 水平拼接:待拼接的结构体数组的行数相等。
  • 垂直拼接:待拼接的结构体数组的列数相等。

4. 结构体数组的操作函数

有很多函数可以作用于结构体数组,下面举几个常用函数的简单用法。

  • isfield(),判断输入的字段是否为输入结构体数组的字段。
  • rmfield(),删除结构体中的字段。
% 1x3的结构体数组
s = struct('name', {'张三', '李四', '王二麻子'}, 'gender', 'male', 'age', {18, 20, 'unknown'});% 函数isfield()
fieldStatus = isfield(s, {'name', 'gender'})% 函数rmfield()
s_new = rmfield(s, {'name', 'gender'})
s

代码运行结果如下。

Matlab 多个10进制数转成指定位宽的2进制矩阵

        可以使用以下方法将Dec中的十进制数,转换为二进制数组

Dec = 4
Bar = dec2bin(Dec, Nbit)  % Bar='100'
for i = 1:length(Bar)D(i) = str2num(Bar);  % D = [1 0 0]
end

Matlab 实现二进制运算

        在MATLAB中进行二进制运算,可以使用位运算符,包括按位与(&)、按位或()、按位异或()、按位取反(~)以及左移(<<)和右移(>>)。
        例如,对两个二进制数进行按位与运算,可以使用以下代码:

a = bin2dec('1010');%将二进制数转换为十进制
b = bin2dec('1100');
result=bitand(a,b); % 按拉与运算
dec2bin(result) %为将十进制结果转换为二进制

        输出结果为:

result = 8;ans = 1000

        其中,bin2dec 函数将二进制转换为十进制数,bitand 函数执行按位与运算,dec2bin 函数将十进制转换为二进制数。

        Matlab可以进行二进制运算,可以使用bitand、bitor、bitxor、bitcmp等函数进行按位与、按位或、按位异或和按位取反等操作。此外,还可以使用dec2bin和bin2dec函数进行十进制和二进制之间的转换。如果需要产生伪随机二进制序列,可以使用randn函数和逻辑运算符进行操作。如果需要进行二进制加法,可以使用类似于全加器的方法进行多位二进制加法器的设计。

Matlab 有符号十进制转二进制 matlab

        matlab 调用 dec2bin() 函数,传入负数就报错,做个笔记吧——新版Matlab已解决

% 当数字a大于0的时候,直接调用函数
bin = dec2bin( a, 8 );  		% 8 是指变成8位的二进制数,例如 a = 3 ,则 bin 就是 0000_0011% 当数字a小于0的时候
bin = dec2bin( a + 2^8 , 8 ); 	% 8 还是8位的意思,比如 a = -3 ,则 bin 就是 1111_1101 % 操作一个一维数组的时候就可以这样来
% =====  array 是一个一维数组  ===== %
for i = 1 :length(array )if(array (i) <0)array (i) = array (i) + 2^8;end
endans = dec2bin(array , 8 ); 		%这个函数 可以直接把数组作为参数输入% 例子里面的 8 是指位数,如果需要转化成16位的,就把 所有的 8 换成 16 !

        dec2bin() 函数会把大于0的整数转换成指定位数的二进制字符串,比如把十进制的 3 转化成 8位的二进制就是:0000_0011 ;
        小于0的数转化成二进制,应该是转化成对应正整数的补码( 按位取反 再 + 1),比如3的8位的按位取反就是:1111_1100 ; 为什么要 + 1呢?如果不 + 1,那么 0000_0011 + 1111_1100 就会得到 1111_1111 ,给他加个 1 就变成了 1_0000_0000 ,如果指定了 8 位 ,那么就会直接抛弃第一个1 ,结果就是 0000_0000 ,所以这样 按位取反 再 +1 的操作就是为了对应 3 + (-3) = = 0 这样的计算结果。
        有了上面的基础,就可以着手准备利用好dec2bin()函数了;思路就是 把负数 a 的补码( 绝对值的按位取反 再 + 1),对应的 十进制 的 整数 b 找到,完了dec2bin(b , 8);有点绕啊,还是举例子,-3 的 补码是 1111_1101,这个字符串对应的十进制就是 253 ; 而 -3 + 2^ 8 == 253;

 power(2,0) + power(2,2)++ power(2,3)+ power(2,4)+ power(2,5)+ power(2,6)+ power(2,7) == 253

结论:

正数:直接 dec2bin();
负数:先给负数 加一个 2^n ,然后再用 dec2bin();

Matlab 满足条件后不再向下执行的语句

        在编写Matlab程序过程中,有时会遇到当程序运行到不满足if条件时让程序跳出,停止运行的情况,在MATLAB中,使用 return 语句实现程序跳出。

a = 1;                  % 定义一个变量a
flag = 1;              % 定义一个标准量 
if 1if flag == a       %判断a与flag是否相等 disp('0');    %如果相等,命令行打印0return;       %不再向下执行 disp('1');    %return 后的语句不执行else disp('2');    %如果不相等,命令行打印2end
elsedisp('3');        %外层if对应的else,命令行打印3,
end
disp('4');            %命令行打印4

        程序运行后,命令行窗口打印0,可以证明在程序执行return后,以后的程序都不运行。
        只将以上程序中变量a的值变为0,程序运行后,命令行窗口打印2,4。
        只将以上程序中第一个if后的1变为0,程序运行后,命令行窗口打印3,4。
        以上程序则可以清楚的验证,执行了return语句后,程序不再运行下去。

Matlab 中的continue、break、return和 error 语句

Continue:
        经常用在for和while语句中,continue一旦被执行,就会终止当前循环,进行下一次循环。

% eg, 在for 循环中:
clc
clear all
close alli = 1;
COND  = 1;for i = 1:20if mod(i,2)==0continueelsefprintf('the array is %d\n',i)end
end% 结果是:
the array is 1
the array is 3
the array is 5
the array is 7
the array is 9
the array is 11
the array is 13
the array is 15
the array is 17
the array is 19% 我们跳过了能够被2整除的数字,找出了剩下的数字
% eg:在while循环中clc
clear all
close alli = 1;
COND  = 1;while COND ==1if mod(i,2)==0i = i+1;continue;elsefprintf('the array is %d\n',i)endif i>=19COND = 2;endi = i+1;
end% 这里可以看到,我们在符合while条件下的循环中,如果被2整除了,
% 那么就会跳过这个循环,直接进到下一个while循环下,从头开始执行。
% 再一次进入if 判断新的i是否满足整除要求。
% 结果如下:
the array is 1
the array is 3
the array is 5
the array is 7
the array is 9
the array is 11
the array is 13
the array is 15
the array is 17
the array is 19

break
        break和continue用法相似,区别在于,一旦执行了break, 就会推出循环,而不是进入下一个循环。在for循环中:我们在1:10中,到一个被3整除的,一旦找到了第一个,整个for循环就不会再执行了。但是要注意,只是不执行break所在的循环,其他的循环还是要执行的。

return:
        return 跳出函数,返回调用函数处。无论是while还是for,直接跳出函数,返回到调用函数之前。

%%
clc
clear all
close alli = 1;
COND  = 1;for i = 1:20if mod(i,2)==0returnelsefprintf('the array is %d\n',i)end
end
%%
clc
clear all
close alli = 1;
COND  = 1;while COND ==1if mod(i,2)==0i = i+1;return;elsefprintf('the array is %d\n',i)endif i>=19COND = 2;endi = i+1;
end% 执行这两段函数都是一个结果:
the array is 1
>> % 当i = 2时,函数就跳出了

        用一个更简单的例子说明,我们有一个很多层的if else 判断语句,这个时候用return 就很好,如果符合条件就可以直接跳出多层if else语句,而不需要把所有的if else 全部执行一遍再跳出。

clc
clear all
close all
flag = 20 ;
if flag <-10fprintf('y<-10\n')return
elseif flag >20fprintf('y>20\n')return
elseif flag >=-10 && flag <20fprintf('-10<=y<20\n')return
else fprintf('y=20\n')return
end
% 总结来说:
break       跳出循环;
continue    继续循环,(不执行 循环体内continue 后面的语句,直接进行下一循环)
return      跳出函数,返回调用函数 处。

信号延迟仿真的 Matlab 源码实现

        信号的延迟是数字信号处理中的一个重要概念,将介绍如何使用Matlab实现信号的延迟仿真,并给出相应的源代码实现。
        首先,我们需要定义一个信号并进行时域分析。在Matlab中,我们可以使用 "t=linspace(0,1,fs)" 生成一个时间轴,其中fs表示采样率,然后根据需要定义一个正弦波信号,如"x=si(2*pi*f*t)"表示频率为f的正弦波信号。
        接着,我们可以通过对信号进行时间延迟来模拟信号的传输过程。在Matlab中,我们可以使用”y=[zeros(1,delay),(1:end-delay)]”将信号向右移动delay个单位。其中,y表示延迟后的信号,x表示原始信号,zeros(1,delay)表示在x前面填充delay个零元素,(1:end-delay)表示去除x后面的delay个元素。
        最后,我们可以将延迟后的信号与原信号进行比较,从而验证延迟是否成功。在Matlab中,我们可以使用"plot(t,X,t,y)”将两个信号绘制在同一张图上,从而直观地比较它们的差异。
        下面是完整的Matlab源代码实现:

%% 信号延迟仿真% 定义信号
fs = 1000; % 采样率
f = 10; % 频率
t = linspace(0, 1, fs); % 时间轴
x = sin(2 * pi * f * t); % 正弦波信号% 模拟信号延迟
delay = 0.5 * fs; % 延迟时间
y = [zeros(1, delay), x(1:end-delay)]; % 延迟后的信号% 绘制信号图像
figure;
subplot(2,1,1);
plot(t, x);
xlabel('time');
ylabel('Amplitude');
title('Original Signal');subplot(2,1,2);
plot(t, y);
xlabel('time');
ylabel('Amplitude');
title('Delayed Signal');

Verilog实现任意时钟周期延时的方法

方法一:非阻塞赋值延时打拍

        这个方法是最简单的实现延时的方法,缺点是如果延时的周期比较长的话,要写的东西也会变得很多,通过这种方式可以把信号延时n个周期。

always @ (posedge clk) begind1 <= d;d2 <= d1;.......dout <= dn;
end

方法二:移位寄存器延时

        这个方法也比较简单,实现起来也很容易,缺点是消耗的资源比较大

//延时N个时钟周期
parameter N=4;
reg [N-1:0] temp;always @(posedge clk or negedge rst_n) beginif(!rst_n) begintemp <= 0;endelse if(in1) begintemp[N-1:0] <= {temp[N-2:0],in1};endelse begintemp[N-1:0] <= {temp[N-2:0],1'b0};end
end
assign out1 = temp[N-1];

方法三:计数器实现任意周期延时

        该方法较为节省资源,能实现任意周期的延时

parameter delay_per = 8'h4;//延时周期数
reg flag;
reg [7:0] delay_count;
always @(posedge clk or negedge rst_n) beginif(!rst_n) beginflag <= 0;endelse if(in1)beginflag <= 1;endelse if(delay_count == delay_per)beginflag <= 0;end
end
always @(posedge clk or negedge rst_n) beginif(!rst_n)begindelay_count <= 0;out1 <= 0;endelse if(delay_count == delay_per && flag == 1'b1)begindelay_count <= 0;out1 <= 1;endelse if(flag == 1'b1)begindelay_count <= delay_count + 1'b1;out1 <= 0;endelse begindelay_count <= 0;out1 <= 0;end
end

        介绍了三种实现信号周期延时的方法,但需要注意的是,在方法三中,如果信号间隔的周期数小于延时的周期,这种方法就不太合适了。此时推荐使用方法二,或者使用FIFO来实现信号延时。

% =========== 未完待续 ===========

相关文章:

MATLAB——知识点备忘

最近在攻略ADC建模相关方面&#xff0c;由好多零碎的知识点&#xff0c;这里写个备忘录。 Matlab 判断一个数是否为整数 1. isinteger 函数 MATLAB中&#xff0c;可以使用 isinteger 函数来判断一个数是否为整数&#xff0c;例如&#xff1a;要判断x是否为整数可以采用以下代…...

C++入门(以c为基础)——学习笔记2

1.引用 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间。在语法层面&#xff0c;我们认为它和它引用的变量共用同一块内存空间。 可以取多个别名&#xff0c;也可以给别名取别名。 b/c/d本质都是别名&#…...

设计模式-单例模式(懒汉式)

1. 概念 保证一个类只有一个实例并为该实例提供一个全局唯一的访问节点 2. 懒汉式-方式一 2.1 代码示例&#xff08;方式一&#xff09; 示例 public class Singleton03 {/*** 构造器私有化*/private Singleton03() {}/*** 成员变量*/private static Singleton03 INSTANCE;…...

算法| ss 回溯

39.组合总数46.全排列—478.子集79.单词搜索—1连续差相同的数字—1 39.组合总数 /*** param {number[]} candidates* param {number} target* return {number[][]}*/ // 思路 // dfs传参&#xff0c;传idx&#xff0c; 剩余target // dfs返回&#xff1a; 0 收集&#xff0c…...

基于R语言绘制-散点小提琴图

原文链接&#xff1a;R语言绘图 | 散点小提琴图 本期教程 写在前面 本期的图形来自发表在Nature期刊中的文章&#xff0c;这样的基础图形在日常分析中使用频率较高。 获得本期教程数据及代码&#xff0c;后台回复关键词&#xff1a;20240405 绘图 设置路径 setwd("You…...

Arduino开发 esp32cam+opencv人脸识别距离+语音提醒

效果图 低于20厘米语音提醒字体变红 Arduino代码 可直接复制使用&#xff08;修改自己的WIFI) #include <esp32cam.h> #include <WebServer.h> #include <WiFi.h> // 设置要连接的WiFi名称和密码 const char* WIFI_SSID "gumou"; const char* …...

LeNet卷积神经网络

文章目录 简介conv2d网络层的结构 简介 它是最早发布的卷积神经网络之一 conv2d 这个卷积成的参数先进行介绍一下&#xff1a; self.conv1 nn.Conv2d(in_channels3, out_channels10, kernel_size3, stride1, padding1)先看一下in_channels 输入的通道数&#xff0c;out_cha…...

Python常用算法思想--回溯算法思想详解【附源码】

通过回溯算法解决“组合”问题、“排序”问题、“搜索”之八皇后问题、“子集和”之0-1背包问题、字符串匹配等六个经典案例进行介绍: 一、解决“组合”问题 从给定的一组元素中找到所有可能的组合,这段代码中的 backtrack_combinations 函数使用了回溯思想,调用 backtrack…...

Day5-Hive的结构和优化、数据文件存储格式

Hive 窗口函数 案例 需求&#xff1a;连续三天登陆的用户数据 步骤&#xff1a; -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…...

01 计算机网络发展与分类

计算机网络&#xff1a;计算机技术与通信技术的结合。 阶段一&#xff1a;早期网络&#xff1a;ARPAnet。 阶段二&#xff1a;厂商独立发展阶段 阶段三&#xff1a;标准化阶段&#xff1a;ISO,TCP/IP 计算机网络分类 计算机网络分类1&#xff1a;通信子网和资源子网 通信子…...

ubuntu安装sublime3并设置中文

安装Sublime Text 3 在Ubuntu上安装Sublime Text 3可以通过以下步骤进行&#xff1a; 打开终端。 导入Sublime Text 3的GPG密钥&#xff1a; wget -qO- https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - 添加Sublime Text 3的存储库&#xff1a; …...

python调用阿里云短信配置

1. 新增资质和签名 # 访问地址&#xff1a; https://dysms.console.aliyun.com/domestic/text/qualification2. 静静等待几十分钟~~~ 3. 通过sdk去调用&#xff0c;查看有没有python的sdk https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/SendSms?完整代码 # -*- cod…...

MySQL 8.0.13安装配置教程

写个博客记录一下&#xff0c;省得下次换设备换系统还要到处翻教程&#xff0c;直接匹配自己常用的8.0.13版本 1.MySQL包解压到某个路径 2.将bin的路径加到系统环境变量Path下 3.在安装根目录下新建my.ini配置文件&#xff0c;并用编辑器写入如下数据 [mysqld] [client] port…...

【idea快捷键】idea开发java过程中常用的快捷键

含义win快捷键mac快捷键复制当前行或选定的代码块Ctrl DCommand D通过类名快速查找类Ctrl NCommand N通过文件名快速查找文件Ctrl Shift NCommand Shift N通过符号名称快速查找符号&#xff08;类、方法等&#xff09;Ctrl Alt Shift NCommand Shift O跳转到声明C…...

2024年腾讯云GPU云服务器配置价格表(内存/系统盘/地域)

腾讯云GPU服务器是提供GPU算力的弹性计算服务&#xff0c;腾讯云GPU服务器具有超强的并行计算能力&#xff0c;可用于深度学习训练、科学计算、图形图像处理、视频编解码等场景&#xff0c;腾讯云百科txybk.com整理腾讯云GPU服务器租用价格表、GPU实例优势、GPU解决方案、GPU软…...

重构数据访问层-优化数据访问的开发

重新整理了一下过去开发的框架&#xff0c;在准备开发新项目时候&#xff0c;重新整理了一下思路&#xff0c;感觉数据访问层还是很鸡肋。过去几年中&#xff0c;急于完成项目开发和交付&#xff0c;框架都是迭代过来的&#xff0c;虽然满足了开发需求&#xff0c;但是&#xf…...

云计算概述报告

以下是一篇论述类文章 文章目录 I. 云计算介绍&#xff08;1&#xff09;云计算基本概念&#xff08;2&#xff09;云计算基本特征 II. 云计算发展历程&#xff08;1&#xff09;云计算的起源&#xff08;2&#xff09;云计算的发展阶段 III. 云计算特点&#xff08;1&#xff…...

C++:线程库的使用

文章目录 Windows和Linux平台的线程线程构造函数模板参数包 最近发现C11的线程库还没有进行总结&#xff0c;因此本篇对于C11当中新增的线程库的一些基本用法进行总结 Windows和Linux平台的线程 在Linux平台下是存在一些原生的线程系统调用的&#xff0c;比如有pthread_creat…...

机器学习模型:决策树笔记

第一章&#xff1a;决策树原理 1-决策树算法概述_哔哩哔哩_bilibili 根节点的选择应该用哪个特征&#xff1f;接下来选什么&#xff1f;如何切分&#xff1f; 决策树判断顺序比较重要。可以使用信息增益、信息增益率、 在划分数据集前后信息发生的变化称为信息增益&#xff0c…...

20.2k stars项目搭建私人网盘界面美功能全

Nextcloud是一套用于创建网络硬盘的客户端&#xff0d;服务器软件。其功能与Dropbox相近&#xff0c;但Nextcloud是自由及开放源代码软件&#xff0c;每个人都可以在私人服务器上安装并执行它。 GitHub数据 20.2k stars561 watching3.2k forks 开源地址:https://github.com/ne…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...