实验任务:
实验原理详情见指导书
主要是matlab提供的函数,自己要学会多查
使用到的函数
function y=uDT(n);
y=n>=0;
作用:提供阶跃
主程序
注意不要用GPT去写一堆乱七八糟的if else,会被骂的
主任务
n=0:30;
x=(n==0);
%题一
%第一小问a1=[3 4 1];
b1=[1 1];h1=filter(b1,a1,x);
subplot(2,1,1)
stem(n,h1,"filled"),grid on;
%impz(b1,a1,10);%第二小问
a2=[2.5 6 10];
b2=[1];h2=filter(b2,a2,x);
subplot(2,1,2)
stem(n,h2,"filled"),grid on%题二
nx=-1:11;
nh=-1:6;
figure;
h3=0.875.^nx.*(uDT(nx)-uDT(nx-10));
X=uDT(nh)-uDT(nh-5);
C=conv(h3,X);
ny1=nx(1)+nh(1);
ny2=(nx(end)+nh(end));
ny=ny1:ny2;subplot(2,1,1)
stem(ny,C,"filled"),grid on%题三
B=imread("lena.bmp");
Gx=[-1 0 1;-2 0 2;-1 0 1];
Gy=[1 2 1;0 0 0;-1 -2 -1];
GxB=conv2(Gx,B);
GyB=conv2(Gy,B);
GxyB=conv2(GxB,Gy);
figure;
subplot(2,2,1)
imshow(B);
subplot(2,2,2);
imshow(GxB);
subplot(2,2,3);
imshow(GyB);
subplot(2,2,4);
imshow(GxyB);
思考题
%思考题一
n1=-3:3;
x=[3,11,7,0,-1,4,2];
n2=-1:4;
h=[2,3,0,-5,2,1];input=conv(x,h);nstart=n1(1)+n2(1);
nend=n1(end)+n2(end);n3=nstart:nend;
figure;
subplot(2,1,1)
stem(n3,input,"filled"),grid on;%思考题二:Canny检测
grayImage = imread("lena.bmp");
edgeImage = edge(grayImage, 'Canny');% 显示原图和边缘检测后的图像figure;
figure;
subplot(1,2,1);
imshow(grayImage);
title('原图'); subplot(1,2,2);
imshow(edgeImage);
title('Canny 边缘检测');smoothedImage = imgaussfilt(grayImage,2);
% 使用 sigma=2 的高斯滤波
edgeImage = mat2gray(edgeImage);
%归一化到 [0,1] 范围
% 显示原图和边缘检测后的图像figure;
figure;
subplot(1,2,1);
imshow(grayImage);
title('原图'); subplot(1,2,2);
imshow(smoothedImage);
title('Laplacian 边缘检测');