从1开始的Matlab(快速入门)

MATLAB软件版本:MATLAB R2016b

本文是博主从零开始学Matlab的记录,适合第一次接触Matlab的同学阅读。
一、基础介绍

1.1界面认识

1.2变量命名

注:Matlab中的注释

%% 独占一行的注释(有上下横线分割)

% 普通注释

1)清空环境变量及命令

clear all 清除Workspace中的所有变量(右侧工作区)

clc 清除Command Window中的所有命令(命令行窗口)

2)变量命名规则

①变量名区分大小写

②变量名长度不超过63位

③变量名以字母开头,可以由字母、数字和下划线组成,但不能使用标点

1.3数据类型

1)数字

2 + 4

10 - 7

3 * 5

8 / 2

2)字符与字符串

s = ‘a’ (单引号表示字符串)

==abs(s)==ASCII码

char(97) 输出 a (ASCII码转字符串)

num2str(65) 输出数字65

str=‘I love MATLAB & Machine Learning’

length(str) 字符串长度

doc num2str

3)矩阵(Matlab最NB的东西)

A = [1 2 3; 4 5 2; 3 2 7]
在这里插入图片描述

B = A’ 把A进行转置,行变列,列变行

在这里插入图片描述

C = A( 竖向拉长(按列输出矩阵

在这里插入图片描述

D = inv(A) 逆矩阵(必须时方阵才能求逆矩阵)

执行下面两条语句

D = inv(A) (求逆矩阵)
A * D (相当于A×A的逆)

E = zeros(10,5,3) 创建一个10行5列3维的全0矩阵

在这里插入图片描述

E(:,:,1) = rand(10,5)

rand生成均匀分布的伪随机数。分布在(0~1)之间

主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数

rand(m,n,‘double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’

rand(RandStream,m,n)利用指定的RandStream(随机种子)生成伪随机数

E(:,:,2) = randi(5,10,5)

randi生成均匀分布的伪随机数

主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机数

randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵

r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵

E(:,:,3) = randn(10,5)

randn生成标准正态分布的伪随机数(均值为0,方差为1)

主要语法:和上面一样

4)元胞数组和结构体

在MATLAB中,元胞数组和结构体是两种不同的数据类型,可以用来存储和组织不同类型的数据。

元胞数组(cell array)是一种特殊的数组,可以存储不同类型的数据。元胞数组的每个元素可以是任何类型的数据,包括数字、字符串、矩阵、函数句柄等。元胞数组使用大括号{}来索引和操作元素。

例如,创建一个包含不同类型数据的元胞数组:

cellArray = {1, 'hello', [1 2 3], @sin};
%元胞数组
A = cell(1,6)
A{2} = eye(3) %2021版本前的matlab下标从1开始
A{5} = magic(5)
B = A{5}

注:magic:字面意思是魔方,魔术的意思。在MATLAB中用来生成n阶幻方。比如三阶幻方就是1-9九个数字,组成一个3*3的矩阵,使得该矩阵无论横、竖还是斜三个方向上的三个数的和总是相同的。幻方是一个很古老的问题,试一下就知道了!

结构体(structure)是一种可以存储不同类型数据的数据结构。结构体的每个成员可以有不同的名称,并且每个成员可以是任何类型的数据。结构体使用点操作符.来访问和操作成员。

例如,创建一个包含不同类型数据的结构体:

structure.field1 = 1;structure.field2 = 'hello'; 
structure.field3 = [1 2 3]; 
structure.field4 = @sin;
%结构体
books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
books.name %属性
books.name(1)
books.name{1}

元胞数组和结构体在某些情况下可以互相转换。使用函数cell2struct可以将元胞数组转换为结构体,使用函数struct2cell可以将结构体转换为元胞数组。

% 元胞数组转换为结构体 
cellArray = {1, 'hello', [1 2 3], @sin};structure = cell2struct(cellArray, {'field1', 'field2', 'field3', 'field4'});% 结构体转换为元胞数组 structure.field1 = 1;structure.field2 = 'hello'; 
structure.field3 = [1 2 3];structure.field4 = @sin;cellArray = struct2cell(structure);

1.4.内置常量

eps % 计算机的最小数pi % 圆周率i % 虚数单位,表示√(-1)j % 虚数单位,表示√(-1)

1.5查看已有的变量信息

>> who您的变量为:ans  t    >> whosName      Size            Bytes  Class     Attributesans       1x1                 8  double              t         1x3                24  double              >> size(t) // 列出n,mans =1     3>> length(t) // 列出max(n,m)ans =3

二、矩阵操作

2.1矩阵的定义与构造

A = [1,2,3,4,5,6,5,4,6]
B = 1:2:9 %第二个参数为步长,不可缺省
B = 1:3:9
C = repmat(B,3,2) %重复执行3行2列
D = ones(2,4) %生成一个2行4列的全1矩阵

在MATLAB中,可以使用不同的方法构造矩阵。

  1. 使用方括号[]构造矩阵:

    A = [1,2,3,4,5,6,5,4,6];

  2. 使用冒号运算符构造向量:

    B = 1:2:9; % 步长为2,生成1到9的向量 
    B = 1:3:9; % 步长为3,生成1到9的向量
  3. 使用repmat函数复制矩阵:

    B = 1:3:9; % 步长为3,生成1到9的向量 
    C = repmat(B,3,2); % 重复执行3行2列,生成一个3行6列的矩阵
  4. 使用ones函数生成全1矩阵:

    D = ones(2,4); % 生成一个2行4列的全1矩阵

以上代码示例中,A是一个1行9列的矩阵,B是一个1行5列的向量,C是一个3行6列的矩阵,D是一个2行4列的全1矩阵。

补充行向量

在MATLAB中,可以使用 linspace(a, b, n) 函数来生成一个从 a 到 b 的等间距向量,其中 n 是向量的长度。下面是将这两个表达式转化为 MATLAB 代码的示例:

t1 = linspace(1, 2, 3); % 生成一个长度为 3 的向量 t1,元素在 1 和 2 之间等间距分布
t2 = linspace(1, 2, 3); % 生成一个长度为 3 的向量 t2,元素在 1 和 2 之间等间距分布

执行这些代码将会生成两个向量 t1 和 t2,它们的元素分别为 [1, 1.5, 2] 和 [1, 1.5, 2]。

在MATLAB中,可以使用 logspace(a, b, n) 函数来生成一个从 10^a 到 10^b 的对数间隔向量,其中 n 是向量的长度。下面是将这个表达式转化为 MATLAB 代码的示例:

t = logspace(1, 2, 2); % 生成一个长度为 2 的对数间隔向量 t,元素在 10^1 和 10^2 之间

执行这个代码将会生成一个向量 t,它的元素为 [10, 100]。这意味着 t 的第一个元素是 10,第二个元素是 100。

补充特殊矩阵

>> eye(3) // 单位矩阵ans =1     0     00     1     00     0     1>> eye(3,4)ans =1     0     0     00     1     0     00     0     1     0>> ones(2) // 全为1的矩阵ans =1     11     1>> ones(2,3)ans =1     1     11     1     1>> zeros(2) // 全为0的矩阵ans =0     00     0>> zeros(2,3)ans =0     0     00     0     0>> diag([1,2,3]) // 产生对角矩阵ans =1     0     00     2     00     0     3>> rand(2) // 创建随机矩阵,服从均匀分布ans =0.2785    0.95750.5469    0.9649>> rand(2,1) ans =0.15760.9706>> randn(2) // 创建随机矩阵,服从正态分布ans =0.5377   -2.25881.8339    0.8622>> randn(2,1)ans =0.3188-1.3077>> randperm(5) // 产生随机排列ans =5     3     1     2     4

2.2矩阵的四则运算

A = [1 2 3 4; 5 6 7 8]
B = [1 1 2 2; 2 2 1 1]
C = A + B
D = A - B
E = A * B'
F = A .* B % .*表示对应项相乘
G = A / B %相当于A*B的逆 G*B = A  G*B*pinv(B) = A*pinv(B)  G = A*pinv(B),相当于A乘B
H = A ./ B % ./表示对应项相除

在MATLAB中,可以使用四则运算对矩阵进行操作。

给定两个矩阵A和B:

A = [1 2 3 4; 5 6 7 8]; B = [1 1 2 2; 2 2 1 1];

可以进行以下运算:

  1. 矩阵加法:

    C = A + B;

    结果C为两个矩阵对应元素相加得到的矩阵:

    C = [2 3 5 6; 7 8 8 9];

  2. 矩阵减法:

    D = A - B;

    结果D为两个矩阵对应元素相减得到的矩阵:

    D = [0 1 1 2; 3 4 6 7];

  3. 矩阵乘法:

    E = A * B';

    结果E为矩阵A乘以矩阵B的转置得到的矩阵:

    E = [13 9; 29 21];

  4. 对应项相乘:

    F = A .* B;

    结果F为两个矩阵对应元素相乘得到的矩阵:

    F = [1 2 6 8; 10 12 7 8];

  5. 对应项相除:

    H = A ./ B;

    结果H为两个矩阵对应元素相除得到的矩阵:

    H = [1 2 1.5 2; 2.5 3 7 8];

  6. 矩阵除法(相当于乘以逆矩阵):

    G = A / B;

    结果G为矩阵A乘以矩阵B的逆矩阵:

    G = [0.5 0.5; 1.5 1.5];

以上是常见的矩阵四则运算操作。请注意,矩阵乘法和矩阵除法的定义与数学中的矩阵乘法和矩阵除法略有不同,需要根据具体的应用场景进行理解和使用。

2.3矩阵的下标

A = magic(5)
B = A(2,3)
C = A(3,:) % :为取全部,那么这条语句表示取第三行
D = A(:,4) %取第四列
[m,n] = find(A > 20) %找到大于20的序号值/矩阵
%取的是索引值
E = A(2:3,1:2) // 取出第2行到第3行,第1列到第2列的所有元素

2.4 删除矩阵的整行或整列

A = [1, 2; 3, 4];AA(:, 1) = []; % 删去第一列,即把第一列变成空矩阵[]B = [4, 5; 6, 7];BB(1, :) = []; % 删去第一行B

在这段代码中,首先定义了矩阵A和B。然后,通过将A的第一列设置为空矩阵[]来删除了A的第一列。接着,通过将B的第一行设置为空矩阵[]来删除了B的第一行。

2.5合并矩阵

A = [1, 2, 3];B = [4, 5, 6];C = [A, B]; % 按行合并矩阵C = [A; B]; % 按列合并矩阵

 执行这些代码将会生成矩阵C,它分别按行和按列合并了矩阵A和B的元素

 2.6矩阵的重塑、旋转

重塑

>> A=[1,2,3;4,5,6]A =1     2     34     5     6>> reshape(A,3,2) // 按列顺序重塑矩阵A为3*2ans =1     54     32     6

旋转

>> AA =1     2     34     5     6>> rot90(A)ans =3     62     51     4

三、程序结构

3.1顺序结构

在MATLAB中,顺序结构是指程序按照代码的顺序依次执行。简单来说,就是从上到下依次执行每一行代码。

例如,下面是一个简单的MATLAB程序,展示了顺序结构的应用:

a = 5;
b = 10;c = a + b;
d = a - b;disp(c);
disp(d);

在这个程序中,首先定义了变量a和b,并分别赋值为5和10。然后,通过a + b计算出变量c的值,通过a - b计算出变量d的值。最后,使用disp函数将c和d的值打印出来。

按照顺序结构的原则,程序将依次执行每一行代码,输出结果为:

15
-5

3.2循环结构

在MATLAB中,循环结构是用来重复执行一段代码的结构。MATLAB提供了两种常用的循环结构:for循环和while循环。

  1. for循环:for循环用于指定一个变量的起始值、终止值和步长,并在每次循环中递增或递减这个变量的值。for循环的语法如下:
for 变量 = 起始值:步长:终止值循环体代码
end

例如,下面的代码展示了使用for循环计算1到10的累加和:

sum = 0;
for i = 1:10sum = sum + i;
enddisp(sum);

在这个例子中,for循环从1到10依次取值给变量i,每次循环将i加到sum上。最后,使用disp函数将sum的值打印出来。

  1. while循环:while循环用于在满足某个条件的情况下重复执行一段代码,直到条件不满足为止。while循环的语法如下:
while 条件循环体代码
end

例如,下面的代码展示了使用while循环计算1到10的累加和:

sum = 0;
i = 1;
while i <= 10sum = sum + i;i = i + 1;
enddisp(sum);

在这个例子中,while循环在i小于等于10的条件下执行循环体代码,每次循环将i加到sum上,并将i递增1。当i大于10时,条件不再满足,循环结束。最后,使用disp函数将sum的值打印出来。

3.3分支结构

在MATLAB中,分支结构用于根据条件的真假执行不同的代码块。MATLAB提供了if语句和switch语句两种常用的分支结构。

  1. if语句:if语句根据条件的真假执行不同的代码块。if语句的语法如下:
if 条件代码块1
elseif 条件代码块2
else代码块3
end

其中,条件可以是一个表达式,如果条件为真,则执行代码块1;如果条件为假,但满足第二个条件,则执行代码块2;如果条件都不满足,则执行代码块3。

例如,下面的代码展示了使用if语句判断一个数的正负性:

num = -5;if num > 0disp('正数');
elseif num < 0disp('负数');
elsedisp('零');
end

在这个例子中,根据num的值,if语句会判断num的正负性,并输出相应的结果。

  1. switch语句:switch语句根据表达式的值执行不同的代码块。switch语句的语法如下:
switch 表达式case 值1代码块1case 值2代码块2otherwise代码块3
end

其中,表达式的值会逐个与每个case后面的值进行比较,如果匹配成功,则执行相应的代码块。如果没有匹配成功的case,则执行otherwise后面的代码块。

例如,下面的代码展示了使用switch语句根据星期几输出相应的信息:

day = 3;switch daycase 1disp('星期一');case 2disp('星期二');case 3disp('星期三');case 4disp('星期四');case 5disp('星期五');otherwisedisp('周末');
end

在这个例子中,根据day的值,switch语句会匹配相应的case,并输出相应的信息。

3.4分号

 在MATLAB中,分号(;)的主要含义是用于分隔语句或抑制输出。

  1. 分隔语句:分号用于分隔多个语句。当你在一行中写多个语句时,可以使用分号将它们分隔开。这样可以使代码更简洁,易于阅读。

例如,下面的代码将两个语句放在一行中,并使用分号分隔它们:

a = 2; b = 3;
  1. 抑制输出:在MATLAB中,每当执行一个语句时,结果会自动显示在命令窗口中。但是,如果在语句的末尾加上分号,就可以抑制输出。这在执行大量计算或不需要显示结果的情况下很有用。

例如,下面的代码计算两个数的和,但是只将结果存储在变量中,而不在命令窗口中显示:

a = 2;
b = 3;
c = a + b;

在这个例子中,c的值是5,但是由于语句末尾加上了分号,所以不会在命令窗口中显示出来。

需要注意的是,分号只能用于抑制当前语句的输出,对于其他语句的输出没有影响。如果你希望在代码中的多个位置都抑制输出,需要在每个语句的末尾都加上分号。

3.5输入输出

输入

s=input('please input a string: ','s');

输出

x = rand(1, 3);fprintf("x=%.3f\n", x); % 输出x的所有元素,保留3位小数fprintf("x=%.3f\n", x(2)); % 输出x[2](可省略第1行的行下标)fprintf("x=%.3f\n", x(1, 2)); % 输出x[1][2]y = [1, 2; 3, 4];fprintf("y=%.3f\n", y(:)); % 按列输出y的所有元素fprintf("y=%.3f\n", y(2, 1)); % 输出y[2][1]fprintf("y=%.3f\n", y(1)); % 输出y[1][1](可省略第1列的列下标)fprintf("y=%.3f\n", y(2)); % 输出y[2][1](可省略第1列的列下标)

3.6函数

编写函数,存于文件ave.m中,代码如下:

% You can get the average of a vector.
% Just input "ave;" to run this function.
function y = ave(x)
x = input('input a vector x=');
[m,n] = size(x);
if ~(m==1|n==1)error('please input a vector which is m=1 or n=1')
end
y = sum(x)/length(x);
fprintf("y=%.2f\n",y);

四、基本绘图操作

4.1二维平面绘图

% 初始化
clear;
clc;% 将图片的字体等格式设置成latex样式,方便输入公式
set(0,'defaulttextinterpreter','latex');
set(0,'defaultAxesTickLabelInterpreter','latex');
set(0,'defaultLegendInterpreter','latex');set(groot,'defaultLineLineWidth',2); % 更改默认线宽%% 产生x,y数据
x=linspace(0,2*pi,20);
y{1}=sin(x);
y{2}=cos(x);
y{3}=x;
y{4}=exp(sin(x));%% 绘制图1
figure(1);
plot(x,y{1},'--ro',... % --虚线 r红色 o圆圈标记x,y{2},':k^',... % :点组成的线 k黑色 ^三角形标记x,y{3},'-.',... % -.线如-.x,y{4});
xlabel('x轴');
ylabel('y轴');
title('例图');
% legend显示图中曲线对应的公式(在坐标区上添加图例)
legend('$y=sin(x)$','$y=cos(x)$','$y=x$','$y=e^{sin(x)}$','Location','best');
xlim([0,2*pi]); % 设置x轴范围
print('C:\Users\LJW\Desktop\example1','-dpng'); % 保存为png格式图片到桌面路径 %% 绘制图2
figure(2);subplot(2,2,1); % 分成2*2四个子图,开始画第一个子图
plot(x,y{1},'--');
title('$y=sin(x)$');subplot(2,2,2); % 分成2*2四个子图,开始画第二个子图
plot(x,y{2},':');
title('$y=cos(x)$');subplot(2,2,[3,4]); % 第3,4个子图合并,写成[3,4]
plot(x,y{3},':',x,y{4}); % 2个子图合并
legend('$y=x$','$y=e^{sin(x)}$','Location','best');
xlim([0,2*pi]); % 设置x轴范围print('C:\Users\LJW\Desktop\example2','-dpng'); % 保存为png格式图片到桌面路径 


x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); %共用一个x的坐标系,在y上有不同的取值
%设置相应的标签
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time(\musec)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')

4.2三维立体绘图

%2.三维立体绘图
t = 0: pi/50: 10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
%hold on
%hold off %不保留当前操作
grid on %把图片绘制出来,在图片中加一些网格线
axis square %使整个图(连同坐标系)呈方体

4.3图形的保存与导出 

如果直接用截图的方式截取matlab生成的图像,会影响图像的清晰度。因此我们建议:可以用如下方法保存与导出图形。

1)如图

2)编辑→复制选项

可调节相应元素

3)编辑→图窗属性

4)文件→导出设置

通过调节宽度、高度等像素值属性,可以让图片即使很小,文字依然清晰。 

五、读取文件

5.1Excel文件

使用 xlsread 函数来读取Excel文件中的数据。这个函数可以接受文件名、工作表名和单元格范围作为输入参数,并返回数值数据、文本数据和原始数据作为输出参数。例如,读取文件 myExample.xlsx 中的第一个工作表的 A1:C3 范围内的数据

[num,txt,raw] = xlsread('myExample.xlsx','Sheet1','A1:C3');

使用 readtable 函数来读取Excel文件中的表格数据。这个函数可以将Excel文件中的一个或多个工作表导入为一个或多个表格变量。例如,读取文件 myExample.xlsx 中的第二个工作表的所有数据

T = readtable('myExample.xlsx','Sheet',2);

 将Matlab中的数据写入Excel文件中,可以使用 xlswrite 函数或 writetable 函数。这些函数可以将矩阵、元胞数组或表格变量写入Excel文件中的指定工作表和单元格范围。例如,如果您想将矩阵 A 写入文件 myExample.xlsx 中的第三个工作表的 B2:D6 范围内,可以使用以下代码:

A = rand(5,3); % 创建一个5行3列的随机矩阵
xlswrite('myExample.xlsx',A,'Sheet3','B2:D6');

 5.2csv文件

使用 csvread 函数来读取只包含数值的CSV文件。这个函数可以接受文件名、起始行列和读取范围作为输入参数,并返回一个矩阵作为输出参数。例如,读取文件 myData.csv 中的第一行第二列开始的所有数据

M = csvread('myData.csv',0,1);

 使用 textscan 函数来读取包含文本和数值的CSV文件。这个函数可以接受一个已打开的文件标识符、一个格式说明符和其他可选参数,并返回一个元胞数组作为输出参数。例如,读取文件 myInfo.csv 中的第一列是字符串,第二列是整数,第三列是浮点数的数据

fid = fopen('myInfo.csv');
C = textscan(fid,'%s%d%f','Delimiter',',','HeaderLines',1);
fclose(fid);

 使用 readmatrix 函数来读取包含表格数据的CSV文件。这个函数可以根据文件的扩展名自动判断文件格式,并返回一个矩阵或一个表作为输出参数。可以指定输出类型和其他可选参数来控制导入过程。例如,想读取文件 myTable.csv 中的所有数据,并将字符串类型的数据转换为缺失值

A = readmatrix('myTable.csv','OutputType','double','TreatAsMissing','NA');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/145010.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react项目优化

随着项目体积增大&#xff0c;打包的文件体积会越来越大&#xff0c;需要优化&#xff0c;原因无非就是引入的第三方插件比较大导致&#xff0c;下面我们先介绍如何分析各个文件占用体积的大小。 1.webpack-bundle-analyzer插件 如果是webpack作为打包工具的项目可以使用&…

Vivado与Notepad++关联步骤

填写内容 先看"关联步骤"再看此处&#xff1a; 在“editor”栏中填写 Notepad的路径&#xff0c;并加上[file name] -n[line number]&#xff0c; 这里我的 Notepad 的路径为 C:/Program Files (x86)/Notepad/notepad.exe &#xff1b; 故这里我就填上以下内容即可…

xxl-job 2.2之后版本高版本executor未授权访问漏洞

xxl-job 低版本executor未授权访问 低版本的executor未授权访问漏洞是 POST /run HTTP/1.1 Host: your-ip:9999 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like G…

rabbitMQ死信队列快速编写记录

文章目录 1.介绍1.1 什么是死信队列1.2 死信队列有什么用 2. 如何编码2.1 架构分析2.2 maven坐标2.3 工具类编写2.4 consumer1编写2.5 consumer2编写2.6 producer编写 3.整合springboot3.1 架构图3.2 maven坐标3.3 构建配置类&#xff0c;创建exchange&#xff0c;queue&#x…

【Leetcode】 450. 删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a; 首先…

“童”趣迎国庆 安全“童”行-柿铺梁坡社区开展迎国庆活动

“金秋十月好心境&#xff0c;举国欢腾迎国庆。”国庆节来临之际&#xff0c;为进一步加强梁坡社区未成年人爱国主义教育&#xff0c;丰富文化生活&#xff0c;营造热烈喜庆、文明和谐的节日氛围。9月24日上午&#xff0c;樊城区柿铺街道梁坡社区新时代文明实践站联合襄阳市和时…

Spring IOC(控制反转)与DI(依赖注入)

定义 IOC(Inversion of Control)&#xff0c;即控制反转&#xff1a;对象的创建控制权不再由程序来执行&#xff0c;而是交由给Spring容器处理。简单的说程序不需要进行new操作&#xff0c;对象直接由Spring容器自动创建。 DI(Dependency Injection)&#xff0c;即依赖注入&am…

阿木实验室PrometheusV1.1安装+Ubuntu 20.04

1. 安装ros-noetic 2. 安装Mavros包 sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras3. GeographicLib wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh这里可以使用代理 &#xff1a;wg…

9.30小任务

消息队列实现进程之间通信方式 实现了父子进程之间的通信 #include <myhead.h>//消息结构体 typedef struct {long msgtype; //消息类型char data[1024]; //消息正文 }Msg_ds;#define SIZE sizeof(Msg_ds)-sizeof(long) //正文大小int main(int arg…

Bug:elementUI样式不起作用、Vue引入组件报错not found等(Vue+ElementUI问题汇总)

前端问题合集&#xff1a;VueElementUI 1. Vue引用Element-UI时&#xff0c;组件无效果解决方案 前提&#xff1a; 已经安装好elementUI依赖 //安装依赖 npm install element-ui //main.js中导入依赖并在全局中使用 import ElementUI from element-ui Vue.use(ElementUI)如果此…

idea环境下如何打包可运行jar?

工作中有时候偶尔写一些工具类、小程序&#xff0c;可是java程序员制作一个可运行jar实在折腾&#xff0c;利用idea开发环境&#xff0c;可以快速打包自己的可运行jar。具体怎么操作呢&#xff1f; 创建一个空白的java项目并完成自己的程序开发 完成java代码&#xff1a; /**…

(Vue3)defineOptions、defineModels Pinia及持久化

Vue3.3新特性defineOptions v-model和defineModel 开启特性vite.config.js中加配置 重启架子&#xff08;试验性质&#xff09;npm run dev Pinia Vue最新的状态管理工具&#xff0c;代替Vuex Pinia配置创建项目时自动添加 安装 npm install pinia 创建一个 pinia 实例 (根 s…

Bluespec SytemVerilog 握手协议接口转换

01、引言 由于接口控制信号上的差异&#xff0c;要实现Bluespec SystemVerilog(BSV)生成的代码和外部Verilog代码之间的正确交互是一件比较麻烦同时容易出错的事情。在BSV中, 模块之间的交互都是基于Action或ActionValue这两类method完成。下图展示了使用BSV设计的某一模块的接…

8.2 Jmeter if控制器使用

前提&#xff1a;jmeter脚本需要用到if控制器&#xff0c;if判断如果查询不到&#xff0c;则去新增。 1、添加if控制器 线程组-->逻辑控制器-->如果(if)控制器 1&#xff09;、Expression (must evaluate to true or false) &#xff1a;表达式&#xff08;值必须是tru…

数据结构算法--6 希尔排序和计数排序

希尔排序 希尔排序与插入排序原理相同&#xff0c;希尔排序是一种分组插入排序算法 > 首先取一个整数d1n/2&#xff0c;将元素分为d1个组&#xff0c;每组相邻两元素之间距离为d1&#xff0c;在各组内之间插入排序。 > 取第二个整数d2n/2&#xff0c;重复上述分组排序…

HTML——列表,表格,表单内容的讲解

文章目录 一、列表1.1无序&#xff08;unorder&#xff09;列表1.2 有序&#xff08;order&#xff09;列表1.3 定义列表 二、表格**2.1 基本的表格标签2.2 演示 三、表单3.1 form元素3.2 input元素3.2.1 单选按钮 3.3 selcet元素 基础部分点击&#xff1a; web基础 一、列表 …

华为云云耀云服务器L实例评测|华为云云耀云服务器L实例CentOS的存储和备份策略

1 华为云云耀云服务器L实例介绍 华为云云耀云服务器L实例是华为云计算服务中的一种虚拟云服务器&#xff0c;它提供了强大的计算资源&#xff0c;可以在云端运行各种应用程序和服务。 华为云服务器提供了多种实例类型&#xff0c;包括通用型、计算优化型、内存优化型等&#…

时序预测 | MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序列预测

时序预测 | MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序…

Flutter笔记:手写一个简单的画板工具

Flutter笔记 手写一个简单的画板工具 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/133418742 目 录 1…

华为智能企业上网行为管理安全解决方案(2)

本文承接&#xff1a; https://blog.csdn.net/qq_37633855/article/details/133339254?spm1001.2014.3001.5501 重点讲解华为智能企业上网行为管理安全解决方案的部署流程。 华为智能企业上网行为管理安全解决方案&#xff08;2&#xff09; 课程地址方案部署整体流程组网规划…