matlab简单分析离散小波变换
华中科技大学《数字信号分析理论实践》 学习总结记录
- 离散小波变换进行多尺度分解
- 离散二进小波变化进行小波分解
h1 = [-0.014434 0.050359 0.017710 -0.097013 -0.020592 0.315146 0.521421 0.315146 -0.020592 -0.097013 0.017710 0.050359 -0.014434];
g1 = [-0.014617 -0.050166 0.018325 0.096982 -0.020898 -0.315048 0.522109 -0.315048 -0.020898 0.096982 0.018325 -0.050166 -0.014617];
Fs = 5120;
N = 1024;
dt = 1/Fs;
for i = 1:342
x(i) = sin(2*pi*50*i*dt);
x(i+342) = sin(2*pi*800*i*dt);
x(i+684) = sin(2*pi*2000*i*dt);
end
subplot(511)
plot(x)
x1 = filter(h1,1,x);
subplot(513)
plot(x1)
x2 = filter(g1,1,x);
subplot(512)
plot(x2)
%--------第二层分解-----%
for i = 1:13
h2(2*i-1) = h1(i);
h2(2*i) = 0;
g2(2*i-1) = g1(i);
g2(2*i) = 0;
end
x3 = filter(h2,1,x1);
subplot(514)
plot(x3)
x4 = filter(g2,1,x1);
subplot(515)
plot(x4)
- 正交小波变换
Fs = 5120;
N = 1024;
dt = 1/Fs;
for i = 1:1024
x(i) = sin(2*pi*50*i*dt)+0.5*sin(2*pi*1500*i*dt);
end
plot(x)
[c,l] = wavedec(x,3,'db7');
subplot(211)
plot(c)
y = waverec(c,l,'db7');
subplot(212)
plot(y)
- 基于小波变换的信号滤波
Fs = 5120;
N = 1024;
dt = 1/Fs;
for i = 1:1024
x(i) = sin(2*pi*50*i*dt)+0.5*sin(2*pi*1500*i*dt);
end
plot(x)
[c,l] = wavedec(x,3,'db7');
subplot(311)
plot(c)
%-------滤波---------%
for i = 139:1061
c(i) = 0;
end
subplot(312)
plot(c)
y = waverec(c,l,'db7');
subplot(313)
plot(y)
- 小波包分解与重构
wpdec
wprocef
,点结点可以显示值
Fs = 5120;
N = 1024;
dt = 1/Fs;
for i = 1:1024
x(i) = sin(2*pi*50*i*dt)+0.5*sin(2*pi*1500*i*dt);
end
y = wpdec(x,3,'db7');
plot(y)
z = wprcoef(y,[3 0]);
plot(z)
- 图像的小波包变换
[FileName,PathName] = uigetfile('*.jpg','Select Jpg File');
abc = fullfile(PathName,FileName);
I = imread(abc);
imshow(I);
Y = wpdec2(I,2,'db10');
plot(Y)
m0_71394943: 有没有完整的课设报告呀
做而论道_CS: 在第二张插图中,有: X + /X = 111 ... 111(2) = -1 --------------- 他这么写,对吗? 不应该是: 111 ... 111 (2) = [-1 ]补码 ? 怎么能有: 111 ... 111 (2) = -1 ! 真是一派胡言。 这帮老外,基本常识都不懂啊! 约克大学,就是这么教学的吗!
做而论道_CS: 用两位十进制计算时,舍弃进位,就是:减去一百。 所以,加上 99,再减 100,当然就是 “-1” 了。 计算机用的是二进制数。 八位二进制数是:0000 0000 ~ 1111 1111。 等价于十进制数:0 ~ 255。 如果出现进位,就是:2^8 = 256。 那么,加 255 (1111 1111),再减 256,也就是 “-1” 了。 同理:+254 (1111 1110),就是-2。 +253 (1111 1101),就是-3。 。。。 。。。 +128 (1000 0000),就是-128。 以上这些正数,就是【计算机中的负数】。 计算机专家,则称之为:“补码”。 这些正数(即补码)与其负数的关系,你一定可以看出来: 正数(即补码)= 256 + 该负数 一般化,就是: 正数(即补码)= 2^n + 该负数 n 是二进制补码的位数。 例:求-31 的八位补码,是多少? 解:256-31 = 225 = 1110 0001 (二进制)。 代替负数的正数(即补码),就这么求出来了。 简不简单? 意不意外? 但是,计算机专家,可不想让你弄的这么快当! 它们偏要跟你说: 机器数符号位原码反码补码取反加一... 谁要是跟着琢磨 “取反加一”, 显然,他就是在沟里蹲着呢!
做而论道_CS: 其实,取反加一,只是一个障眼法而已。 计算机专家,用它,掩盖了负数的真面目。 虽然,计算机中,使用的是二进制数。 但是,二进制数,也是数,与十进制,没什么两样。 你看十进制数吧,两位,就是:0 ~ 99。 可有:27 + 99 = (一百) 26 27 - 1 = 26 如果你忽略进位,仍旧保持两位数, 这两种算法的功能,就是相同的。 就是说,当你舍弃了进位: 正数,就能当负数使用; 加法,就能完成减法运算。 在计算机中,舍弃进位,将会怎样? 就可以省掉减法器。 只用一个加法器,便可横行天下! 看懂了吗? 用正数代替负数,关键是:舍弃进位! 老外的算术水平太洼,显然弄不懂这些! 所以,才编造出:取反加一。 千万千万,千万别跟老外学算术啊! 谁要是跟老外学算术,立刻、马上、直接,就掉沟里去了。
施霁: 博主你好,我想问一下,查看这些芯片的网址是什么?