实验二 系统响应及系统稳定性
实验目的
(1)学会运用Matlab 求解离散时间系统的零状态响应;
(2)学会运用Matlab 求解离散时间系统的单位取样响应;
(3)学会运用Matlab 求解离散时间系统的卷积和。
实验原理及实例分析
1. 离散时间系统的响应
【例2-1】已知某LTI系统的差分方程为:
3 y ( n ) − 4 y ( n − 1 ) + 2 y ( n − 2 ) = x ( n ) + 2 x ( n − 1 ) 3y(n)-4y(n-1)+2y(n-2)=x(n)+2x(n-1) 3y(n)−4y(n−1)+2y(n−2)=x(n)+2x(n−1)
试用Matlab命令绘出当激励信号为 x ( n ) = ( 1 2 ) n u ( n ) x(n)=(\frac{1}{2})^n u(n) x(n)=(21)nu(n) 时该系统的零状态响应。
a=[3 -4 2];
b=[1 2];
n=0:30;
x=(1/2).^n;
%%%
% 函数名:filter(b,a,x)
% 功能:计算离散系统的零状态响应
% 格式:filter(b,a,x), 其中a 为响应的系数行向量,b 为激励的系数行向量,x 为激励序列。
y=filter(b,a,x);
%%%
stem(n,y,'filled'),grid on
xlabel('n'),title('系统响应y(n)')

2. 离散时间系统的单位取样响应
系统的单位取样响应定义为系统在 δ ( n ) \delta (n) δ(n) 激励下系统的零状态响应,用 h ( n ) h(n) h(n) 表示。
Matlab 求解单位取样响应可利用函数filter,并将激励设为单位抽样序列。
例如,求解实例2-1 中系统的单位取样响应时,MATLAB 源程序为:
a=[3 -4 2];
b=[1 2];
n=0:30;
x=(n==0);% 产生单位抽样序列
h=filter(b,a,x);
stem(n,h,"fill"),grid on
xlabel('n'),title('系统单位取样响应h(n)')

Matlab另一种求单位取样响应的方法是利用控制系统工具箱提供的函数impz来实现。
a=[3 -4 2];
b=[1 2];
%%%
% 函数名:impz(b,a,N)
% 功能:求离散系统的单位响应并绘出图形
% 格式:其中,a 为响应的系数行向量,b 为激励的系数行向量,参数N通常为正整数,代表计算单位取样响应的样值个数。
impz(b,a,30);
%%%
grid on;
title('系统单位取样响应h(n)');

程序运行结果如图2-3 所示,比较图2-1 和图2-2,不难发现结果相同。
3. 离散时间信号的卷积和运算
【例2-2】利用Matlab 的conv 命令求两个长为4 的矩形序列的卷积和。
即: g ( n ) = [ u ( n ) − u ( n − 4 ) ] ∗ [ u ( n ) − u ( n − 4 ) ] \textrm{g}\left(n\right)=\left\lbrack u\left(n\right)-u\left(n-4\right)\right\rbrack *\left\lbrack u\left(n\right)-u\left(n-4\right)\right\rbrack g(n)=[u(n)−u(n−4)]∗[u(n)−u(n−4)]
x1=ones(1,4);
x2=ones(1,4);
%%%
% 函数名f=conv(f1,f2)
% 功能:求卷积
% 格式:f1,f2 为参与卷积运算的两个序列,f 为卷积的结果,f 的长度为length(f1)+length(f2)-2
g=conv(x1,x2);
%%%
n=0:length(x1)+length(x2)-2;
stem(n,g,'filled'),grid on,xlabel('n')

【例2-3】已知某系统的单位取样响应为 h ( n ) = 0. 8 n [ u ( n ) − u ( n − 8 ) ] h\left(n\right)=0.8^n \left\lbrack u\left(n\right)-u\left(n-8\right)\right\rbrack h(n)=0.8n[u(n)−u(n−8)] ,试求Matlab 求当激励信号为 x ( n ) = u ( n ) − u ( n − 4 ) x\left(n\right)=u\left(n\right)-u\left(n-4\right) x(n)=u(n)−u(n−4) 时,系统的零状态响应。
解:Matlab 中可通过卷积求解零状态响应,即 x ( n ) ∗ h ( n ) x\left(n\right)*h\left(n\right) x(n)∗h(n) 。由题意可知,
描述 h ( n ) h\left(n\right) h(n) 向量的长度至少为 8,描述 x ( n ) x\left(n\right) x(n) 向量的长度至少为 4,因此为了图形
完整美观,我们将 h ( n ) h\left(n\right) h(n) 向量和 x ( n ) x\left(n\right) x(n) 向量加上一些附加的零值。
addpath('.\2024-2025(1)《信号处理实验》资料(请拷贝到u盘中,每次试验带到实验室)\实验中用到的一些函数和音频图像文件');% 定义x(n)向量显示范围(添加了附加的零值)
nx = -1:5;
% 定义h(n)向量显示范围(添加了附加的零值)
nh = -2:10;% 生成单位阶跃序列
x = uDT(nx) - uDT(nx-4);
% 生成h(n)序列
h = 0.8.^nh .* (uDT(nh) - uDT(nh-8));% 计算卷积
y = conv(x, h);% 计算卷积结果的起始点和终点
ny1 = nx(1) + nh(1);
ny2 = nx(end) + nh(end);
ny = ny1:ny2;% 绘制x(n)的图像
subplot(311);
stem(nx, x, 'fill');
grid on;
xlabel('n');
title('x(n)');
axis([-4 16 0 3]);% 绘制h(n)的图像
subplot(312);
stem(nh, h, 'fill');
grid on;
xlabel('n');
title('h(n)');
axis([-4 16 0 3]);% 绘制y(n)的图像
subplot(313);
stem(ny, y, 'fill');
grid on;
xlabel('n');
title('y(n) = x(n) * h(n)');
axis([-4 16 0 3]);

实验内容
(1)试用Matlab 命令求解以下离散时间系统的单位取样响应,并判断系统的稳定性。
$ 1)~~3y\left(n\right)+4y\left(n-1\right)+y\left(n-2\right)=x\left(n\right)+x\left(n-1\right) $
clear;
clc;
close;a1=[3 4 1];
b1=[1 1];
n=0:30;
x=(n==0);% 产生单位抽样序列
h=filter(b1,a1,x);
subplot(211);
stem(n,h,"fill")
grid on
xlabel('n')
title('filter法-系统单位取样响应h(n)')subplot(212);
impz(b1,a1,30);
grid on;
title('impz法-系统单位取样响应h(n)');

%%%
% 函数名:zplane(b,a)
% 功能:得到系统函数H(z)的零极点分布图
% 格式:其中b和a分别表示H(z)的分子和分母多项式的系数向量,函数的作用是在z平面上画出单位圆,零点和极点。
%%%
zplane(b1,a1);

$ 2)~~\frac{5}{2}y\left(n\right)+6y\left(n-1\right)+10y\left(n-2\right)=x\left(n\right) $
close;
a2=[5/2 6 10];
b2=[1];
n=0:30;
x=(n==0);% 产生单位抽样序列
h=filter(b2,a2,x);
subplot(211)
stem(n,h,"fill")
grid on
xlabel('n')
title('filter法-系统单位取样响应h(n)')
subplot(212)
impz(b2,a2,31)
axis([0 30 -3*10^8 2*10^8]);
grid on
title('impz法-系统单位取样响应h(n)')

zplane(b2,a2);

(2)已知某系统的单位取样响应为 h ( n ) = ( 7 8 ) n [ u ( n ) − u ( n − 10 ) ] h\left(n\right)={\left(\frac{7}{8}\right)}^n \left\lbrack u\left(n\right)-u\left(n-10\right)\right\rbrack h(n)=(87)n[u(n)−u(n−10)] , 试用MATLAB 求当激励信号为 x ( n ) = u ( n ) − u ( n − 5 ) x\left(n\right)=u\left(n\right)-u\left(n-5\right) x(n)=u(n)−u(n−5) 时,系统的零状态响应。
clear;
addpath('.\2024-2025(1)《信号处理实验》资料(请拷贝到u盘中,每次试验带到实验室)\实验中用到的一些函数和音频图像文件');
% 定义x(n)向量显示范围(添加了附加的零值)
nx = -1:6;
% 定义h(n)向量显示范围(添加了附加的零值)
nh = -1:11;% 生成单位阶跃序列
x = uDT(nx) - uDT(nx-5);
% 生成h(n)序列
h = (7/8).^nh .* (uDT(nh) - uDT(nh-10));% 计算卷积
y = conv(x, h);% 计算卷积结果的起始点和终点
ny1 = nx(1) + nh(1);
ny2 = nx(end) + nh(end);
ny = ny1:ny2;% 绘制x(n)的图像
subplot(311);
stem(nx, x, 'fill');
grid on;
xlabel('n');
title('x(n)');
axis([-4 18 0 2]);% 绘制h(n)的图像
subplot(312);
stem(nh, h, 'fill');
grid on;
xlabel('n');
title('h(n)');
axis([-4 18 0 2]);% 绘制y(n)的图像
subplot(313);
stem(ny, y, 'fill');
grid on;
xlabel('n');
title('y(n) = x(n) * h(n)');
axis([-4 18 0 4]);

(3)用数字图像处理中的Sobel 算子,调用conv2 函数对lena 图像进行滤波。
设两个3×3 的Sobel 矩阵算子Gx=[-1 0 1;-2 0 2;-1 0 1],Gy=[1 2 1;0 0 0;-1-2 -1]。
-
读取lena 图像数据,保存到B 矩阵中;
-
分如下三种情况对B 进行卷积滤波
① 采用Gx 与B 进行卷积;
② 采用Gy 与的B 进行卷积;
③ 先采用Gx 与B 进行卷积,然后再采用Gy 与B 进行卷积;
④ 在一个figure 中,分四个子图显示出:原始图像,经过Gx 卷积滤波后
图像、经过Gy 卷积滤波后图像,先后采用Gx 和Gy 与的B 进行卷积滤波后
的图像,观察滤波后的图像的效果。
clear;
% 定义Sobel算子
Gx = [-1 0 1; -2 0 2; -1 0 1];
Gy = [1 2 1; 0 0 0; -1 -2 -1];% 读取Lena图像
B = imread('.\2024-2025(1)《信号处理实验》资料(请拷贝到u盘中,每次试验带到实验室)\实验中用到的一些函数和音频图像文件\lena.bmp')
B = 512x512 uint8 矩阵 131 136 133 132 137 137 135 138 133 134 132 128 128 129 126 122 122 120 118 116 113 108 103 99 84 86 77 74 71 67 68 60 59 57 52 56 67 67 62 65 70 73 67 64 70 71 72 79 73 74134 135 132 134 139 133 130 138 140 138 133 126 124 124 122 118 122 120 118 117 114 109 103 98 91 94 81 76 70 65 66 57 60 69 70 68 66 59 60 73 75 75 73 72 71 71 70 71 80 69136 129 137 134 130 135 132 133 135 130 127 128 131 131 126 121 121 114 116 115 108 107 102 90 89 84 78 84 70 69 60 57 55 54 56 60 56 67 59 65 68 72 77 76 69 65 71 80 74 76137 130 137 135 131 135 132 132 135 131 128 129 132 132 127 122 124 122 117 112 114 109 102 99 100 89 76 76 62 66 65 67 62 62 65 67 64 73 67 73 58 62 69 73 70 65 65 68 76 77137 132 137 135 131 134 133 132 135 132 129 129 132 132 128 124 127 125 116 110 115 108 105 103 97 89 79 81 67 69 64 64 56 57 62 62 59 66 62 69 66 66 69 74 75 73 73 75 75 71137 133 136 136 132 133 133 131 134 130 128 128 130 130 127 124 127 120 115 112 114 104 108 101 95 87 79 83 69 69 63 61 53 53 60 58 56 61 59 65 67 67 70 74 75 73 75 79 76 79136 134 134 136 132 131 134 130 131 128 126 126 128 128 126 124 124 120 115 114 120 103 108 99 90 85 79 83 70 69 61 58 62 60 68 65 66 68 67 72 63 68 77 82 80 74 74 78 65 66134 133 132 135 132 130 135 130 129 127 125 125 126 126 125 124 121 125 116 113 131 105 105 103 89 83 77 83 69 69 61 59 64 60 68 63 68 69 68 70 68 72 79 82 78 73 75 80 72 78132 132 130 134 131 129 136 130 129 127 126 125 126 127 126 126 120 125 114 111 132 102 105 103 96 86 75 76 63 67 66 68 60 53 60 55 64 65 63 62 71 70 70 71 69 66 68 73 76 74131 132 129 134 131 129 136 130 130 128 127 126 127 127 127 127 120 119 111 110 125 97 107 100 92 85 77 82 69 71 66 66 64 55 61 56 67 68 65 63 76 73 73 76 77 74 70 68 77 73
% ① 采用Gx与B进行卷积
B_Gx = conv2(B, Gx, 'same');% ② 采用Gy与B进行卷积
B_Gy = conv2(B, Gy, 'same');% ③ 先采用Gx与B进行卷积,然后再采用Gy与B进行卷积
B_Gx_Gy = conv2(B_Gx, Gy, 'same');% ④ 在一个figure中,分四个子图显示图像
figure;
subplot(2,2,1), imshow(B), title('原始图像');
subplot(2,2,2), imshow(B_Gx, []), title('Gx卷积滤波后图像');
subplot(2,2,3), imshow(B_Gy, []), title('Gy卷积滤波后图像');
subplot(2,2,4), imshow(B_Gx_Gy, []), title('Gx和Gy卷积滤波后图像');

原始图像:未经处理的灰度图像。
Gx卷积滤波后图像:突出水平边缘。
Gy卷积滤波后图像:突出垂直边缘。
Gx和Gy卷积滤波后图像:结合两者,全面突出边缘。
思考题
(1) Matlab 的工具箱函数conv,能用于计算两个有限长序列之间的卷积,但conv 函数假定这两个序列都从n=0 开始。试编写M 文件计算x(n) = [3,11,7,0,−1,4,2],−3≤ n ≤ 3 和 h(n) = [2,3,0,−5,2,1],−1≤ n ≤ 4 之 间 的 卷积,并绘制y(n)的波形图。
close;
clear;
% 定义序列 x(n) 和 h(n)
nx = -3:3; % n 的范围
x = [3, 11, 7, 0, -1, 4, 2]; % x(n)nh = -1:4; % n 的范围
h = [2, 3, 0, -5, 2, 1]; % h(n)% 计算卷积
y = conv(x, h);% 定义 y(n) 的范围
ny = nx(1) + nh(1) : nx(end) + nh(end); % y(n) 的范围% 绘制x(n)的图像
subplot(311);
stem(nx, x, 'fill');
grid on;
xlabel('n');
title('x(n)');
axis([-4 8 -5 15]);% 绘制h(n)的图像
subplot(312);
stem(nh, h, 'fill');
grid on;
xlabel('n');
title('h(n)');
axis([-4 8 -5 5]);% 绘制y(n)的图像
subplot(313);
stem(ny, y, 'fill');
grid on;
xlabel('n');
title('y(n) = x(n) * h(n)');
axis([-4 8 -80 80]);

(2) 在数字图像处理边缘检测技术中,除了Sobel 算子外,还有哪些边缘检测算子?通过查找资料,选择某种边缘检测算子,在Matlab 平台上编程实现对lena 或其他图像进行边缘检测,显示出原图和边缘检测后的图像。
- Prewitt 算子
- Canny 边缘检测
- Roberts 交叉梯度算子
- Laplacian 边缘检测
- Scharr 算子
数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)_ubuntu写出roberts、sobel、laplace边缘检测算法-CSDN博客
图像特征与边缘检测:从Sobel算子到Canny边缘检测【计算机视觉】-CSDN博客
clear;
% 读取图像
img = imread([...'.\2024-2025(1)《信号处理实验》资料(请拷贝到u盘中,每次试验带到实验室)\实验中用到的一些函数和音频图像文件\lena_colour.bmp'% '运动.jpg'% '东方明珠.jpg']);
img_RGB = img; % MATLAB 读取图像默认是 RGB 格式% 灰度化处理图像
grayImage = rgb2gray(img);% 高斯滤波
gaussianBlur = imgaussfilt(grayImage, 1); % 1 为标准差% 阈值处理
binary = imbinarize(gaussianBlur, 0.5); % 0.5 为阈值% Roberts算子
kernelx = [-1 0; 0 1];
kernely = [0 -1; 1 0];
x_roberts = imfilter(double(binary), kernelx);
y_roberts = imfilter(double(binary), kernely);
Roberts = uint8(sqrt(x_roberts.^2 + y_roberts.^2));% Prewitt算子
kernelx = [1 1 1; 0 0 0; -1 -1 -1];
kernely = [-1 0 1; -1 0 1; -1 0 1];
x_prewitt = imfilter(double(binary), kernelx);
y_prewitt = imfilter(double(binary), kernely);
Prewitt = uint8(sqrt(x_prewitt.^2 + y_prewitt.^2));% Sobel算子
Sobel_x = imfilter(double(binary), fspecial('sobel'));
Sobel_y = imfilter(double(binary), fspecial('sobel')');
Sobel = uint8(sqrt(Sobel_x.^2 + Sobel_y.^2));% Laplacian算子
Laplacian = uint8(imfilter(double(binary), fspecial('laplacian')));% 显示图像
figure;
subplot(2, 3, 1), imshow(img_RGB), title('原始图像'), axis off;
subplot(2, 3, 2), imshow(binary,[]), title('二值图'), axis off;
subplot(2, 3, 3), imshow(Roberts,[]), title('Roberts算子'), axis off;
subplot(2, 3, 4), imshow(Prewitt,[]), title('Prewitt算子'), axis off;
subplot(2, 3, 5), imshow(Sobel,[]), title('Sobel算子'), axis off;
subplot(2, 3, 6), imshow(Laplacian,[]), title('Laplacian算子'), axis off;

clear;

% 读取图像
img = imread('.\2024-2025(1)《信号处理实验》资料(请拷贝到u盘中,每次试验带到实验室)\实验中用到的一些函数和音频图像文件\lena_colour.bmp');
img_RGB = img; % MATLAB 读取图像默认是 RGB 格式% 灰度化处理图像
grayImage = rgb2gray(img);% 高斯滤波
gaussianBlur = imgaussfilt(grayImage, 1); % 1 为标准差% 阈值处理
binary = imbinarize(gaussianBlur, 0.); % 0.5 为阈值% Roberts算子(使用 conv2)
kernelx = [-1 0; 0 1];
kernely = [0 -1; 1 0];
x_roberts = conv2(double(binary), kernelx, 'same');
y_roberts = conv2(double(binary), kernely, 'same');
Roberts = uint8(sqrt(x_roberts.^2 + y_roberts.^2));% Prewitt算子(使用 conv2)
kernelx_prewitt = [1 1 1; 0 0 0; -1 -1 -1];
kernely_prewitt = [-1 0 1; -1 0 1; -1 0 1];
x_prewitt = conv2(double(binary), kernelx_prewitt, 'same');
y_prewitt = conv2(double(binary), kernely_prewitt, 'same');
Prewitt = uint8(sqrt(x_prewitt.^2 + y_prewitt.^2));% Sobel算子(使用 conv2)
Sobel_x = conv2(double(binary), fspecial('sobel'), 'same');
Sobel_y = conv2(double(binary), fspecial('sobel')', 'same');
Sobel = uint8(sqrt(Sobel_x.^2 + Sobel_y.^2));% Laplacian算子(使用 conv2)
Laplacian = uint8(conv2(double(binary), fspecial('laplacian'), 'same'));% 显示图像
figure;
subplot(2, 3, 1), imshow(img_RGB), title('原始图像'), axis off;
subplot(2, 3, 2), imshow(binary, []), title('二值图'), axis off;
subplot(2, 3, 3), imshow(Roberts, []), title('Roberts算子'), axis off;
subplot(2, 3, 4), imshow(Prewitt, []), title('Prewitt算子'), axis off;
subplot(2, 3, 5), imshow(Sobel, []), title('Sobel算子'), axis off;
subplot(2, 3, 6), imshow(Laplacian, []), title('Laplacian算子'), axis off;
相关文章:
实验二 系统响应及系统稳定性
实验目的 (1)学会运用Matlab 求解离散时间系统的零状态响应; (2)学会运用Matlab 求解离散时间系统的单位取样响应; (3)学会运用Matlab 求解离散时间系统的卷积和。 实验原理及实…...
【人工智能】深度学习入门:用TensorFlow实现多层感知器(MLP)模型
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 多层感知器(MLP)是一种基础的神经网络结构,广泛应用于分类和回归任务。作为深度学习的重要组成部分,理解并实现MLP是学习更复杂神经网络模型的基础。本文将介绍多层感知器的核心概念、数学原理,并使用…...
设计模式之建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,旨在将一个复杂对象的构建过程与其表示分离。它允许通过一步步地构造对象,而不需要暴露对象的内部细节和构建过程。通常,这个模式适用于创建对象时需要多个步骤&…...
谈一下开源生态对 AI人工智能大模型的促进作用
谈一下开源生态对 AI人工智能大模型的促进作用 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 开源生态对大模型的促进作用是一个多维度且深远的话题,它不仅加速了技术创新的速度,…...
数据结构——树与二叉树
树 介绍 n个节点的有效集,它可为空树或非空树; 树是一种递归的结构。 对于非空树: 有且仅有一个称为根的节点。 除根节点以外其余节点可分为m个互不相交的有限集,且这些有限集本身也是一棵树,称为根的子树。 分等…...
神经网络(系统性学习三):多层感知机(MLP)
相关文章: 神经网络中常用的激活函数 神经网络(系统性学习一):入门篇 神经网络(系统性学习二):单层神经网络(感知机) 多层感知机(MLP) 多层感…...
Python学习——字符串操作方法
mystr “hello word goodbye” str “bye” Find函数:检测一个字符串中是否包含另一个字符串,找到了返回索引值,找不到了返回-1 print(mystr.find(str,0,len(mystr))) print(mystr.find(str,0,13)) index函数:检测一个字符串是否包含另一…...
css使用弹性盒,让每个子元素平均等分父元素的4/1大小
css使用弹性盒,让每个子元素平均等分父元素的4/1大小 原本: ul {padding: 0;width: 100%;background-color: rgb(74, 80, 62);display: flex;justify-content: space-between;flex-wrap: wrap;li {/* 每个占4/1 */overflow: hidden;background-color: r…...
C语言练习.if.else语句.strstr
今天在做题之前,先介绍一下,新学到的库函数strstr 想要使用它,要先给它一个头文件<string.h> char *strstr(const char*str1,const char*str2); 首先:1.strstr的返回值是char,字符类型的。 2.两个实参ÿ…...
STM32编程小工具FlyMcu和STLINK Utility 《通俗易懂》破解
FlyMcu FlyMcu 模拟仿真软件是一款用于 STM32 芯片 ISP 串口烧录程序的专用工具,免费,且较为非常容易下手,好用便捷。 注意:STM32 芯片的 ISP 下载,只能使用串口1(USART1),对应的串口…...
拉格朗日乘子(Lagrange Multiplier)是数学分析中用于解决带有约束条件的优化问题的一种重要方法,特别是SVM
拉格朗日乘子(Lagrange Multiplier)是数学分析中用于解决带有约束条件的优化问题的一种重要方法,也称为拉格朗日乘数法。 例如之前博文写的2月7日 SVM&线性回归&逻辑回归在支持向量机(SVM)中,为了…...
计算机网络——数据链路层
计算机广域网如果采用多点连接的方式: 因为广域网的链路中带宽大,延迟大,很有可能发送碰撞导致数据错误 而且布局困难...
HTMLCSS:3D金字塔加载动画
效果演示 这段代码通过CSS3的3D变换和动画功能,创建了一个旋转的金字塔加载动画,每个侧面都有不同的颜色渐变,底部还有一个模糊的阴影效果,增加了视觉的立体感。 HTML <div class"pyramid-loader"><div cl…...
Charles抓包工具-笔记
摘要 概念: Charles是一款基于 HTTP 协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果来达到分析抓包的目的。 功能: Charles 是一个功能全面的抓包工具,适用于各种网络调试和优化场景。 它…...
【Github】如何使用Git将本地项目上传到Github
【Github】如何使用Git将本地项目上传到Github 写在最前面1. 注册Github账号2. 安装Git工具配置用户名和邮箱仅为当前项目配置(可选) 3. 创建Github仓库4. 获取仓库地址5. 本地操作(1)进入项目文件夹(2)克隆…...
Express编写中间件
中间件 注意上面的调用next()。调用此函数会调用应用程序中的下一个中间件函数。该next()函数不是Node.js或Express API的一部分,而是传递给中间件函数的第三个参数。该next()函数可以命名为任何东西,但按照惯例,它总是被命名为“next”。为避…...
【Spring Boot】# 使用@Scheduled注解无法执行定时任务
1. 前言 在 Spring Boot中,使用Scheduled注解来定义定时任务时,定时任务不执行;或未在规定时间执行。 import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;Component public c…...
Java基于SpringBoot+Vue的藏区特产销售平台
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
_computed _destinations() 为什么模板不写()
_computed _destinations() 为什么模板不写() 在 Vue 模板中使用计算属性时,不需要在属性名称后面加上括号 ()。计算属性本质上是一个 getter 函数,但 Vue 会将其转换为一个响应式的属性。Vue 会自动调用这些计算属性并将其结果作为属性值使用。 计算属…...
接口上传视频和oss直传视频到阿里云组件
接口视频上传 <template><div class"component-upload-video"><el-uploadclass"avatar-uploader":action"uploadImgUrl":on-progress"uploadVideoProcess":on-success"handleUploadSuccess":limit"lim…...
SimbaSchema在数据云平台中的可观测性实践与应用
建立可观测性体系是很多数据部门的理想。从Logs、Metrics、Traces和Meta抓取系统状态,到建立数据模型和指标体系,全流程均通过数据来支持运维。建立可观测性体系具备其行业标准,即所有数据平台类基础设施理论上都应提供Infomation Schema可观…...
VB、VBS、VBA的区别及作用
VB、VBS 和 VBA 是三种与微软 Visual Basic 相关的编程语言或环境,它们在功能和用途上有所不同: # Visual Basic (VB) Visual Basic 是一种面向对象的编程语言,最初由微软公司开发。它是一种高级编程语言,旨在简化开发过程&…...
elasticsearch的文档管理
2 json数据入门 json数据类型 基础数据类型 字符串,只要用双引号包裹的都是字符串类型。“嘻嘻”,“文勇”,“2024” 数字型,2024,3.1415926 布尔型,true 和 false 空值,null 高级数据类…...
Java基础-I/O流
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 字节流 定义 说明 InputStream与OutputStream示意图 说明 InputStream的常用方法 说明 OutputStrea…...
【CVE-2024-9413】SCP-Firmware漏洞:安全通告
安全之安全(security)博客目录导读 目录 一、概述 二、修订历史 三、CVE根因分析 四、问题修复解决 一、概述 在SCP固件中发现了一个漏洞,如果利用该漏洞,可能会允许应用处理器(AP)在系统控制处理器(SCP)固件中导致缓冲区溢出。 CVE IDCVE-2024-9413受影响的产品SC…...
【iOS】知乎日报总结
知乎日报总结 前言详情页评论区tableView的自适应高度评论区的展开与收缩 收藏中心FMDB数据库数据库的使用 总结 前言 前五个礼拜完成了知乎日报的仿写,新学习了几个第三方库以及解决了一些网络异步的问题,本篇博客是对这个仿写项目的一些总结。两周前进…...
Python 使用 OpenCV 将 MP4 转换为 GIF图
以下是使用 Python 和 OpenCV 将 MP4 转换为 GIF 的示例代码: python import cv2 import imageiodef mp4_to_gif(mp4_path, gif_path, fps10, start_timeNone, end_timeNone):"""将MP4视频转换为GIF动图。:param mp4_path: 输入MP4视频的路径。:pa…...
学习路之phpstudy--安装mysql5.7后在my.ini文件中无法修改sql_mode
windows环境下使用phpstudy安装mysql5.7后需要修改mysql中的sql_mode配置,但是在phpstudy中打开mysql配置文件my.ini后, 通过查找找不到sql_mode或sql-mode, 此时无法在my.ini文件中直接进行修改,可以使用mysql命令进行修改&#…...
MySQL-学习笔记
基础篇 sql字段 1. date 类型 date类型用于存储日期值,格式为’YYYY-MM-DD’,显示范围是从’1000-01-01’到’9999-12-31’。它只包含日期部分,不包含时间部分。 2.datetime 类型 datetime类型用于存储日期和时间值,格式为’Y…...
HarmonyOS4+NEXT星河版入门与项目实战(19)------状态管理 @Prop@Link@Provide@Consume
文章目录 1、@Prop@Link@Provide@Consume装饰器图解2、案例演示1、模块划分2、模块封装1、任务统计模块2、列表管理模块3、主界面4、完整代码3、父组件是对象@Prop可以是对象属性1、案例改造2、完整代码4、@Provide@Consume案例1、案例改造2、完整代码3、总结1、@Prop@Link@Pro…...
企业OA管理系统:Spring Boot技术实现与案例研究
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了企业OA管理系统的开发全过程。通过分析企业OA管理系统管理的不足,创建了一个计算机管理企业OA管理系统的方案。文章介绍了企业OA管理系统的系统分析部…...
react
proTable manualRequest:实现初次进入不查询调用接口,当点击搜索调价查询才调用接口 form{{ ignoreRules: false }} 在搜索条件上增加必选项 formItemProps: { rules: [{required: true,message: 请选择结束时间}] },需要在proTable中增加form{{ ignoreRules: false }}才生效…...
【VTK】MFC中使用VTK9.3
MFC中如果使用VTK 碎碎念一、vtk环境配置二、具体实现1、新建类2. 自定义控件3、跑个栗子 总结 碎碎念 如果不是老程序用的MFC,我才不想用MFC去使用VTK呢。 一、vtk环境配置 关于环境配置你可以看这篇文章,在这里不过多赘述。需要注意要选择支持MFC&a…...
mysql系列1—mysql架构和协议介绍
背景: 本文开始整理mysql相关的文章,用于收集数据库相关内容;包括mysql架构和存储方式、索引结构和查询优化、数据库锁等内容。思考如何根据具体的业务给出最优的分表规划和表设计、字段选择和索引设计、优化的SQL语句,以及数据库…...
美创科技入选2024数字政府解决方案提供商TOP100!
11月19日,国内专业咨询机构DBC德本咨询发布“2024数字政府解决方案提供商TOP100”榜单。美创科技凭借在政府数据安全领域多年的项目经验、技术优势与创新能力,入选收录。 作为专业数据安全产品与服务提供商,美创科技一直致力于为政府、金融、…...
Vue——响应式数据,v-on,v-bind,v-if,v-for(内含项目实战)
目录 响应式数据 ref reactive 事件绑定指令 v-on v-on 鼠标监听事件 v-on 键盘监听事件 v-on 简写形式 属性动态化指令 v-bind iuput标签动态属性绑定 img标签动态属性绑定 b标签动态属性绑定 v-bind 简写形式 条件渲染指令 v-if 遍历指令 v-for 遍历对象的值 遍历…...
Vue实训---1-创建Vue3项目
0-在VSCode中的终端中运行npm -v查看版本号 如果出现——“npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。……”的错误,则需要在 vscode 终端执行 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 命令即可。…...
设计模式之观察者模式
背景 假如我们现在有这样一个场景:市场上的股票价格不定时变化,而后台监控者和广告想要实时获取股票信息,我们应该怎么做? 显然在这个场景里,我们有这样一个设计 一个股票类不时更新股票价格另外有两个类Monitor和Bi…...
Vue.js 学习总结(13)—— Vue3 version 计数介绍
前言 Vue3.5 提出了两个重要概念:version计数和双向链表,作为在内存和计算方面性能提升的最大功臣。既然都重要,那就单挑 version 计数来介绍,它在依赖追踪过程中,起到快速判断依赖项有没有更新的作用,所以…...
数据结构 ——— 直接选择排序算法的实现
目录 直接选择排序算法的思想 优化直接选择排序算法的思想 代码实现(默认升序) 直接选择排序算法的思想 直接选择排序算法的思想类似与直接插入排序 区别在于从大到小选择最小的元素或者最大的元素直接放在元素应该停留的位置每次从待排序的元素中选…...
初始Python篇(5)—— 集合
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 集合 相关概念 集合的创建与删除 集合的操作符 集合的相关操作方法 集合的遍历 集合生成式 列表、元组、字典、集合的…...
基于Qt/C++/Opencv实现的一个视频中二维码解析软件
本文详细讲解了如何利用 Qt 和 OpenCV 实现一个可从视频和图片中检测二维码的软件。代码实现了视频解码、多线程处理和界面更新等功能,是一个典型的跨线程图像处理项目。以下分模块对代码进行解析。 一、项目的整体结构 项目分为以下几部分: 主窗口 (M…...
图片生成视频-右进
右侧进入 ffmpeg -loop 1 -i image.jpg -f lavfi -i colorcblack:s1280x720:d20 -filter_complex "[1:v]formatrgba[bg];[0:v]formatrgba,scale1280:720[img];[bg][img]overlayxif(lt(t,3),W,if(lt(t,8),W-(t-3)*W/5,0)):y(H-h)/2:enablegte(t,3)" -c:v libx264 -t 2…...
Golang的语言特性与鸭子类型
Golang的语言特性与鸭子类型 前言 什么是鸭子类型? Suppose you see a bird walking around in a farm yard. This bird has no label that says ‘duck’. But the bird certainly looks like a duck. Also, he goes to the pond and you notice that he swims l…...
Spring Boot 3.x + OAuth 2.0:构建认证授权服务与资源服务器
Spring Boot 3.x OAuth 2.0:构建认证授权服务与资源服务器 前言 随着Spring Boot 3的发布,我们迎来了许多新特性和改进,其中包括对Spring Security和OAuth 2.0的更好支持。本文将详细介绍如何在Spring Boot 3.x版本中集成OAuth 2.0…...
Centos-stream 9,10 add repo
Centos-stream repo前言 Centos-stream 9,10更换在线阿里云创建一键更换repo 自动化脚本 华为centos-stream 源 , 阿里云centos-stream 源 华为epel 源 , 阿里云epel 源vim /centos9_10_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author: make.h...
手机发展史介绍
手机,这个曾经在电影和科幻小说中出现的高科技产品,如今已经渗透进了我们生活的每个角落。从单纯的通讯工具到如今集成了通讯、娱乐、工作、社交等多种功能的智能终端,手机的发展史也是人类科技进步的缩影。本文将从手机的发展历程、技术革新…...
七天掌握SQL--->第五天:数据库安全与权限管理
1.1 用户权限管理 用户权限管理是指控制用户对数据库的访问和操作权限。在MySQL中,可以使用GRANT和REVOKE命令来管理用户权限。 GRANT命令用于授予用户权限。语法如下: GRANT privileges ON database.table TO userhost IDENTIFIED BY password;其中&…...
Oracle-表空间/用户的创建与使用
-- 对象 -- 需要create的都是对象 已学的对象:表 table -- 普通用户 只能查询user开头的数据字典 select tablespace_name from user_tablespaces; -- dba用户才能够查询 select tablespace_name from dba_tablespaces; -- 创建表空间(需要管理员…...
生成对抗网络模拟缺失数据,辅助PAMAP2数据集仿真实验
PAMAP2数据集是一个包含丰富身体活动信息的数据集,它为我们提供了一个理想的平台来开发和测试HAR模型。本文将从数据集的基本介绍开始,逐步引导大家通过数据分割、预处理、模型训练,到最终的性能评估,在接下来的章节中,…...