matlab闲杂程序

更新时间:2024-01-12 06:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

%************************************************************************** % 图像检索——形状特征提取

%利用HU的七个不变矩作为形状特征向量 %Image : 输入图像数据

%n : 返回七维形状特征行向量

%************************************************************************** function n = Shape(Image)

% Image = imread('E:\\\\1\\\\1.jpg'); % [M,N,O] = size(Image); M = 256; N = 256;

%--------------------------------------------------------------------------

%彩色图像灰度化

%--------------------------------------------------------------------------

Gray = double(0.3*Image(:,:,1)+0.59*Image(:,:,2)+0.11*Image(:,:,3)); %--------------------------------------------------------------------------

%用Canny边缘检测提取边缘保留边缘灰度图像

%-------------------------------------------------------------------------- % BW = uint8(edge(Gray,'canny')); Egray = uint8(edge(Gray,'canny')); for i = 1:M for j = 1:N

if Egray(i,j)==0 Gray(i,j)=0; end end end

%--------------------------------------------------------------------------

%Otsu提出的类判别分析法自动为每一幅廓图像选定阈值,然后用该阈值对图像二值化 %-------------------------------------------------------------------------- %计算灰度级归一化直方图 for i = 0:255

h(i+1) = size(find(Gray==i),1); end

p = h/sum(h);

%计算灰度均值 ut = 0;

for i = 0:255

ut = i*p(i+1)+ut; end

%计算直方图的零阶累积矩和一阶累积矩: for k = 0:254

w(k+1) = sum(p(1:k+1));

u(k+1) = sum((0:k).*p(1:k+1));

end

%计算类分离指标 deltaB = zeros(1,255); for k = 0:254

if w(k+1)~=0&w(k+1)~=1

deltaB(k+1) = (ut*w(k+1)-u(k+1))^2/(w(k+1)*(1-w(k+1))); end end

[value,thresh] = max(deltaB); % deltaB = zeros(1,255); % delta1 = zeros(1,255); % delta2 = zeros(1,255); % deltaW = zeros(1,255); % for k = 0:254

% if w(k+1)~=0&w(k+1)~=1

% deltaB(k+1) = (ut*w(k+1)-u(k+1))^2/(w(k+1)*(1-w(k+1))); % delta1(k+1) = 0; % delta2(k+1) = 0; % for i = 0:k

% delta1(k+1) = (i-u(k+1)/w(k+1))^2*p(i+1)+delta1(k+1); % end

% for i = k+1:255

% delta2(k+1) = (i-(ut-u(k+1))/(1-w(k+1)))^2*p(k+1)+delta2(k+1); % end

% deltaW(k+1) = delta1(k+1)+delta2(k+1); % end % end

% for i = 1:255 % if deltaB==0 % yita=0; % else

% yita(i) = 1/(1+deltaW(i)./deltaB(i)); % end % end

% % D的最大值作为最佳阈值 % [value,thresh] = max(yita); %对图像二值化 for i = 1:M for j = 1:N

if Gray(i,j)>=thresh BW(i,j) = 1; else

BW(i,j) = 0; end

end end

%-------------------------------------------------------------------------- %计算图像质心:(I,J)

%-------------------------------------------------------------------------- m00 = sum(sum(BW)); %零阶矩 m01 = 0; %一阶矩 m10 = 0; %一阶矩 for i = 1:M for j = 1:N

m01 = BW(i,j)*j+m01; m10 = BW(i,j)*i+m10; end end

I = (m10)/(m00); J = m01/m00;

%-------------------------------------------------------------------------- %中心矩:

%-------------------------------------------------------------------------- u11 = 0;

u20 = 0; u02 = 0; u30 = 0; u03 = 0; u12 = 0; u21 = 0; for i = 1:M for j = 1:N

u20 = BW(i,j)*(i-I)^2+u20; u02 = BW(i,j)*(j-J)^2+u02; u11 = BW(i,j)*(i-I)*(j-J)+u11; u30 = BW(i,j)*(i-I)^3+u30; u03 = BW(i,j)*(j-J)^3+u03; u12 = BW(i,j)*(i-I)*(j-J)^2+u12; u21 = BW(i,j)*(i-I)^2*(j-J)+u21; end end

u20 = u20/m00^2; u02 = u02/m00^2; u11 = u11/m00^2; u30 = u30/m00^(5/2); u03 = u03/m00^(5/2); u12 = u12/m00^(5/2); u21 = u21/m00^(5/2);

%-------------------------------------------------------------------------- %7个Hu不变矩:

%--------------------------------------------------------------------------

n(1) = u20+u02;

n(2) = (u20-u02)^2+4*u11^2;

n(3) = (u30-3*u12)^2+(u03-3*u21)^2; n(4) = (u30+u12)^2+(u03+u21)^2; n(5) = (u30-3*u12)*(u30+u12)*((u30+u12)^2-3*(u03-3*u21)^2)+(u03-3*u21)*(u03+u21)*((u03+u21)^2-3*(u30+u12)^2);

n(6) = (u20-u02)*((u30+u12)^2-(u03+u21)^2)+4*u11*(u30+u12)*(u03+u21); n(7) = (3*u21-u03)*(u30+u12)*((u30+u12)^2-3*(u03-3*u21)^2)+(u30-3*u21)*(u03+u21)*((u03+u21)^2-3*(u30+u12)^2);

% %-------------------------------------------------------------------------- % %内部归一化:

% %-------------------------------------------------------------------------- % en = mean(n);

% delta = sqrt(cov(n)); % n = abs(n-en)/(3*delta);

感谢放在我贴吧里的朋友:

一 概述

1 关于信号与系统(About signal and system) 杂的系统来完成。从一般的意义上说,系统是一个由若干互相有关联的单元组成并且有某种功能以用来完成达到特定目的的有机整我们生活在一个信息社会里,在我们身边以及在我们身上信号是无处不在的。如随时可以听到的语音信号,随时可看到的视频、图象信号,伴随着生命始终的心电信号、脑电信号以及心音、脉搏、血压、呼吸等众多的生理信号。信号可以描述范围极广泛的物理现象,信号是多种多样的,但不管是何种信号它都是消息的载体,是消息的一种表现形式。事实上:信息方法已经成为现代一种科学思维方法,那就是把系统抽象为一个信息的获取、传输、加工、处理的

有目的的运动,从而揭示出系统复杂过程的规律的方法。它的优点在于可以不对事物的结构进行解剖性的分析,而是从整体出发研究系统与环境之间的信息输入和输出的关系。通过对信息流程的综合考察,获得系统的整体性的认识。

信号的传输和处理,要有许多不同功能的单元组织起来的一个复体。其实系统方法也已经成为一种科学的基本方法。可以说,当今的时代是一个发现系统、认识系统、构建系统、控制系统的时代。随着人的主体能力的提高,人的对象世界将以不同的系统形式被人所研究和掌握。系统方法就是把研究对象置于系统中进行考察,发现其合理的结构,找出其运动的规律,把握其与外部环境间的联系,确定最优化控制方案的方法。

综上所述,信号和系统是密不可分的。 2 关于MATLAB (Introduce MATLAB)

MATLAB语言是当今科学界(尤其是自动控制领域)最具影响力、也是最有活力的应用类数学软件,它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。

生理信号 小波去噪 脉搏信号采集 血压和脉搏的关系 小波语音去噪

? ? ?

有matlab信号处理

? matlab数字信号处理

数字信号处理matlab代码

? 基于MATLAB的信号与系统仿真分析

小波分析在图像处理中的应用实例(基于Matlab)

? 基于matlab的信号系统实验平台设计论文

已有 1 人评

分 收起 财富

理由

精品文章

+ 3 + 3

rex0331

总评分: + 3 财富 + 3 查看全部评分

收藏0

评分

回复 举报

math

math 当前在线 QQ

1023785467

财富

56660 麦片

MSN

ilovematlab@gmail.com

在线时间

9718 小时

最后登录

2012-5-7

精华

113

帖子

9822

积分

56660

阅读权限

200

注册时间

2007-11-9

UID

2

2#

发表于 2007-11-23 13:41:27 |只看该作者

二 主体部分

信号频谱分析

xsf11_1.m (信号生成与显示程序) 【 dalt=0.002; %采样间隔 t=0:0.002:1.2;

rn=randn(1,length(t));rn(1:300)=0; %产生随机序列

s=sin(2*pi*10*t)+sin(2*pi*50*t)+rn; %生成模拟信号

save singal1 dalt s; clear;

load singal1;

t=[0:length(s)-1]*dalt;plot(t,s,'k');Ylabel('幅值');Xlabel('时间'); title('模拟信号'); 】

xsf11_2.m (模拟信号singal1的频谱分析)

【 clear;load singal1; t=[0:length(s)-1]*dalt;

subplot(211);plot(t,s); Ylabel('幅值'); Xlabel('时间');title('原始信号');

fs=fft(s,512); %快速傅氏变换 pp=fs.*conj(fs)/512; %计算功率谱 ff=(0:255)/512/dalt; %计算各点对应的频率值

subplot(212);plot(ff,pp(1:256)); Ylabel('功率谱密度');Xlabel('频率');

管理员

财富

56660 麦片 在线时间

9718 小时 帖子

9822 ?

串个门 ? 加好友 ? 打招呼 ? 发消息

title('信号功率谱'); 】 11.2.2 如何得到小波函数

◆用下面的程序产生并显示与小波db4相关联的四个滤波器组. xsf11_3.m

【 wname='db4';

[LD,HD,LR,HR]=wfilters(wname); subplot(221);stem(LD);title('低通分解滤波器');grid;

subplot(223);stem(LR);title('低通重构滤波器');grid;

subplot(222);stem(HD);title('高通分解滤波器');grid;

subplot(224);stem(HR);title('高通重构滤波器');grid; 】 运行结果见图11.3.

◆用下面的程序观察小波函数db4的迭代生成过程. xsf11_4.m 【 for I=1:10

[phi,psi,xval]=wavefun('sym4',I); plot(xval,psi+2*I);title('小波函数的生成过程'); hold on end

hold off 】 结果见图11.4.

11.2.3单尺度一维离散小波分解与重构 xsf11_5.m(信号singal1的单尺度离散小波分解与重构) 【 clear;

load singal1; %装载模拟信号 ls=length(s); t=[0:ls-1]*dalt;

subplot(511);plot(t,s);Ylabel('S'); %显示原始信号

[C,D]=dwt(s,'db4'); %用小波db4对信号进行单尺度分解

subplot(523);plot(C);Ylabel('C'); %显示低频分解系数

subplot(524);plot(D);Ylabel('D'); %显示高频分解系数

SCR=upcoef('a',C,'db4',1,ls); %用低频分解系数重构

SDR=upcoef('d',D,'db4',1,ls); %用高频分解系数重构 subplot(513);plot(t,SCR);Ylabel('SCR'); %显示低频重构信号 subplot(514);plot(t,SDR);Ylabel('SDR'); %显示高频重构信号 SR=idwt(C,D,'db4',ls); %对信号进行完全重构 subplot(515);plot(t,SR);Ylabel('SR'); %显示完全重构后的信号 】 回复 评分举报

math

3# math 当前在线

发表于 2007-11-23 13:42:39 |只看该作者 QQ

1023785467 财富

三 参考书目matlab仿真程序——小波去噪[转帖]

clear clc

56660

%在噪声环境下语音信号的增强

麦片 %语音信号为读入的声音文件

MSN %噪声为正态随机噪声

ilovemasound=wavread('c12345.wav'); tlab@gmcount1=length(sound);

noise=0.05*randn(1,count1);

ail.com

for i=1:count1

在线时间 signal(i)=sound(i);

9718 小end

for i=1:count1 时

y(i)=signal(i)+noise(i);

最后登录

end

2012-5- 7 %在小波基'db3'下进行一维离散小波变换

[coefs1,coefs2]=dwt(y,'db3'); %[低频 高频] 精华

113

count2=length(coefs1);

帖子 count3=length(coefs2);

9822

积分

56660 阅读权限

200 注册时间

2007-11-9 UID

2

管理员 财富

56660 麦片 在线时间

9718 小时 帖子

9822 ?

串个门 ? 加好友 ? 打招呼 ? 发消息

energy1=sum((abs(coefs1)).^2); energy2=sum((abs(coefs2)).^2); energy3=energy1+energy2;

for i=1:count2

recoefs1(i)=coefs1(i)/energy3; end

for i=1:count3

recoefs2(i)=coefs2(i)/energy3; end

%低频系数进行语音信号清浊音的判别 zhen=160;

count4=fix(count2/zhen); for i=1:count4

n=160*(i-1)+1:160+160*(i-1); s=sound(n); w=hamming(160); sw=s.*w;

a=aryule(sw,10); sw=filter(a,1,sw); sw=sw/sum(sw);

r=xcorr(sw,'biased'); corr=max(r);

%为清音(unvoice)时,输出为1;为浊音(voice)时,输出为0 if corr>=0.8 output1(i)=0; elseifcorr<=0.1 output1(i)=1; end end

for i=1:count4

n=160*(i-1)+1:160+160*(i-1); if output1(i)==1

switch abs(recoefs1(i))

case abs(recoefs1(i))<=0.002 recoefs1(i)=0;

case abs(recoefs1(i))>0.002 & abs(recoefs1(i))<=0.003

recoefs1(i)=sgn(recoefs1(i))*(0.003*abs(recoefs1(i))-0.000003)/0.002;

otherwise recoefs1(i)=recoefs1(i); end

elseif output1(i)==0

recoefs1(i)=recoefs1(i); end end

%对高频系数进行语音信号清浊音的判别 count5=fix(count3/zhen); for i=1:count5

n=160*(i-1)+1:160+160*(i-1); s=sound(n); w=hamming(160); sw=s.*w;

a=aryule(sw,10); sw=filter(a,1,sw); sw=sw/sum(sw);

r=xcorr(sw,'biased'); corr=max(r);

%为清音(unvoice)时,输出为1;为浊音(voice)时,输出为0 if corr>=0.8 output2(i)=0; elseifcorr<=0.1 output2(i)=1; end end

for i=1:count5

n=160*(i-1)+1:160+160*(i-1); if output2(i)==1

switch abs(recoefs2(i))

case abs(recoefs2(i))<=0.002 recoefs2(i)=0;

case abs(recoefs2(i))>0.002 & abs(recoefs2(i))<=0.003

recoefs2(i)=sgn(recoefs2(i))*(0.003*abs(recoefs2(i))-0.000003)/0.002;

otherwise recoefs2(i)=recoefs2(i); end

elseif output2(i)==0 recoefs2(i)=recoefs2(i); end end

%在小波基'db3'下进行一维离散小波反变换 output3=idwt(recoefs1, recoefs2,'db3');

%对输出信号抽样点值进行归一化处理 maxdata=max(output3);

output4=output3/maxdata;

%读出带噪语音信号,存为'101.wav' wavwrite(y,5500,16,'c101');

%读出处理后语音信号,存为'102.wav' wavwrite(output4,5500,16,'c102');

⑴梁虹等编 ?信号系统分析及实现? 北京 电子工业出版社 2002 ⑵GordonE.carlson著 ?信号与线性系统分析? 曾朝阳等译 北京 机械工业出版社 2004

⑶丁玉美、高西全编 ?数字信号处理? 西安 西安电子科技大学出版社 2003

⑷吴大正编 ?信号与系统? 第三版

⑸董长虹主编 ?MATLAB信号处理与应用? 北京 国防工业出版社 2005

回复 评分举报

rekerch

rekerch 当前离线 财富

5 麦片 在线时间

2 小时 最后登录

2011-8-30 精华

0 帖子

7 积分

7 阅读权限

10 注册时间

4#

发表于 2007-11-23 14:55:58 |只看该作者

很有针对性

很有针对性...:loveliness:

可惜偶还是初学...先保存起来....以后有用呢:)

2007-11-23 UID

532

M学校:童生

M学校:童生, 积分 7, 距离下一级还需 43 积分 财富

5 麦片 在线时间

2 小时 帖子

7 ?

串个门 ? 加好友 ? 打招呼 ? 发消息

查看:301|回复:1

帮忙写个sigexpand函数,做的是数字调制解调(2ask.2fsk.2psk)[复制链接]

tang881022

tang881022 当前离线 财富

9 麦片

在线时间 6 小时 最后登录

2011-10-11

精华 0 帖子

4

积分

4 阅读权限

10

注册时间

2011-10-7 UID 484232

M学校:童生

M学校:童生, 积分 4, 距离下一级还需 46 积分 财富

9 麦片 在线时间

6 小时

电梯直达

1# 发表于 2011-10-7 22:16:29 |只看该作者|倒序浏览

clear all;

close all;

A=1;

Ts=1; N=500;%码元数

N_sample=8;

fc=2;%2Hz

dt=Ts/fc/N_sample;%波形采样间隔

t=0:dt:N*Ts-dt; Lt=length(t);

%二进制信源

d=sign(randn(1,N));

dd=sigexpand((d+1)/2,fc*N_sample); gt=ones(1,fc*N_sample); N=length(d);%NRZ波形

d_NRZ=conv(dd,gt);

subplot(2,2,2);%输入NZR频谱

[f,d_NRZf]=T2F(t,d_NRZ(1:length(t)));

*SK ht=A*cos(2*pi*fc*t); s_2ask=d_NRZ(1:Lt)*ht;*SK信号

[f,s_2askf]=T2F(t,s_2ask);*SK功率谱

/SK

sd_2fsk=2*d_NRZ-1;

s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:length(t))*t);/SK信号波形

[f,s_2fskf]=T2F(t,s_2fsk);/SK功率谱

%2PSK d_2psk=2*d_NRZ-1; s_2psk=d_2psk(1:Lt)*ht;%2PSK信号波形

[f,s_2pskf]=T2F(t,s_2psk);%2PSK功率谱 帖子

4 串个门 ? 加好友 ? 打招呼 ? 发消息

?

有一个作业要做一个和m序列相关的,先是形成自相关m序列,然后生成其自相关序列,两个都要产生图像。这些我都完成了。后面要用matlab图像处理,作出一个类似于示波器的调节旋钮的东西,点击一下就对自相关序列的延迟进行一些调节,调节至m序列和其自相关函数一样。各位牛人看看,给些指点,做了3天了,怎么都做不出来。 代码如下:

1. %m序列发生器及其自相关和功率谱密度 2. clear all; close all; 3. g = 19; % G = 10011 4. state = 8;% state=1000 5. L = 1000; 6. %m序列产生 7. N = 15;

8. mq = mgen(g,state,L); 9. %求序列自相关

10. ms = conv( 1-2*mq, 1-2*mq(15:-1:1) )/N; 11. figure(1) 12. subplot(222)

13. stem(ms(15:end));

14. axis([0 63 -0.3 1.2]);title('m序列自相关序列') 15. %m序列构成的信号(矩形脉冲) 16. N_sample=8; 17. Tc = 1;

18. dt = Tc/N_sample; 19. t = 0:dt:Tc*L-dt;

20. gt = ones(1,N_sample);

21. mt = sigexpand(1-2*mq,N_sample);

本文来源:https://www.bwwdw.com/article/dnlo.html

Top