排列熵matlab如何绘制出图像

排列熵matlab如何绘制出图像,第1张

排列熵matlab如何绘制出图像?可以使用Matlab中的函数pcolor()来绘制排列熵的图像。使用方法如下:

1 首先,准备好排列熵的数据,将其存储在一个矩阵中;

2 然后,使用pcolor()函数绘制图像,其参数为矩阵中的数据;

3 最后,使用colorbar()函数添加颜色条,以便更好地展示排列熵的图像。

摘要:在MATLAB上,用傅立叶变换、自相关函数法以及最大熵估计法对一组离散的时间序列进行谱分析,并作出对应的频谱图,进行比较。关键词:离散时间序列,MATLAB,傅立叶变换,自相关函数法,最大熵估计(MESE) 1.概述:利用傅立叶变换,自相关函数法以及最大熵估计法对离散数据进行谱分析,找到数据的相关特性,并比较几种方法的特点。 2.谱分析原理: 时间序列是以时间为参考基准进行记录的,从直观图上无法获得数据内部的基本特性,通过谱分析的方法,将时域的数据转换到频域上去,通过分析频域的特征来获取数据的特性,从而达到分析数据的目的。 可以用傅立叶变换、自相关函数法、最大熵估计三种方法,将时域的数据转换到频域上进行分析。 利用MATLAB的相关工具来实现。 3.MATLAB实现:31数据说明:程序中所用的数据是由xn=A1sin(f12pin)+A2sin(f22pin)+e (e为白噪声)来产生的,其中:n=0:0001:1;A1=4;A2=4;f1=25;f2=50; 32MATLAB计算源程序 1)创建M文件,对离散时间序列用傅立叶变换和自相关法进行谱分析,代码如下: function FXi(data) figure(1)Fs=1000;subplot(3,1,1);t=0:1/Fs:1;plot(1000t(1:50),data(1:50));xlabel('time(mm)')title('一元时间序列直观图') Y=fft(data,512)Pyy2=Yconj(Y)/512;f2=1000(0:256)/512;subplot(3,1,2);plot(f2,Pyy2(1:257));title('离散数据的傅立叶频谱图')xlabel('频率(Hz)') Fs=1000;NFFT=1024;Cx=xcorr(data,'unbiased');Cxk=fft(Cx,NFFT);Pxx=abs(Cxk);t=0:round(NFFT/2-1);k=tFs/NFFT;P=10log10(Pxx(t+1));subplot(3,1,3);plot(k,P);title('谱估计的自相关函数法')xlabel('频率(Hz)') 2)创建M文件,用最大熵法(MESE)对数据进行谱分析,代码如下: function MESE(data)figure(2);Fs=500;NFFT=1024;pyulear(data,20,NFFT,Fs); 3)载入数据(要具有一定的长度),则输出结果为:4.结果与讨论: 由三种方法得到的频谱图表达的信息是类似的,明确的指出了离散数据中的信号特点,可以从谱分析图中得到数据的周期,与数据的原函数拟和的很好。但从图形的直观效果来看,用傅立叶转换的方法得出来的谱分析图对于数据特性的表达更明确,直观。

matlab 程序设计

>

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

%求一幅数字图像的熵值

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

I=imread('lenabmp');

%I=double(I);

[C,R]=size(I); %求图像的规格

Img_size=CR; %图像像素点的总个数

L=256; %图像的灰度级

H_img=0;

nk=zeros(L,1);

for i=1:C

for j=1:R

Img_level=I(i,j)+1; %获取图像的灰度级

nk(Img_level)=nk(Img_level)+1; %统计每个灰度级像素的点数

end

end

for k=1:L

Ps(k)=nk(k)/Img_size; %计算每一个灰度级像素点所占的概率

if Ps(k)~=0; %去掉概率为0的像素点

H_img=-Ps(k)log2(Ps(k))+H_img; %求熵值的公式

end

end

H_img

%entropy(I)

x=[1 2 3 56 7

2 3 5 45 8

];

[n,m]=size(x);

k=1/log(n);

X=zeros(n,m);

for j=1:m

for i=1:n

c=sort(x(:,j));

big=x(n,j);

small=x(1,j);

X(i,j)=(x(i,j)-small)/(big-small)+1;

end

end

p=[];

for j=1:m

th=0;

for t=(X(:,1))'

th=th+t;

end

Ph=X(:,j)/th;

p=[p Ph];

end

e=[];

for j=1:m

eg=0;

for i=1:n

eh=-kp(i,j)log(p(i,j));

eg=eg+eh;

end

e=[e,eg];

end

E=0;

for j=1:m

E=E+e(j);

end

g=[];

for j=1:m

gh=(1-e(j))/(m-E);

g=[g,gh];

end

Eh=0;

for nh=g

Eh=Eh+nh;

end

w=[];

for j=1:m

wh=g(j)/Eh;

w=[w,wh];

end

s=[];

for i=1:n

sh=w(i)p(i,:);

shen=0;

for she=sh

shen=shen+she;

end

s=[s ,shen];

end

%输入

x=[

369 371 365 387

371 407 387 442

430 375 363 443

408 378 365 449

393 387 437 447

418 396 372 446

];

% 函数shangm, 实现用熵值法求各指标(列)的权重及各数据行的得分

% x为原始数据矩阵, 一行代表一个组, 每列对应一个成分指标

% s返回各行得分, w返回各列权重

[n,m]=size(x); % n=响应面/实验组数, m=成分指标

%% 数据的归一化处理

[X,ps]=mapminmax(x',0,1);

psymin=0002; % 归一化后的最小值

psymax=0996; % 归一化后的最大值

psyrange=psymax-psymin; % 归一化后的极差,若不调整该值, 则逆运算会出错

X=mapminmax(x',ps);

% mapminmax('reverse',xx,ps); % 反归一化, 回到原数据

X=X';  % X为归一化后的数据

%% 计算第j个指标下,第i个记录占该指标的比重p(i,j)

for i=1:n

    for j=1:m

        p(i,j)=X(i,j)/sum(X(:,j));

    end

end

%% 计算第j个指标的熵值e(j)

k=1/log(n);

for j=1:m

    e(j)=-ksum(p(:,j)log(p(:,j)));

end

d=ones(1,m)-e;  % 计算信息熵冗余度

w=d/sum(d)    % 求权值w

y(:,1)=x(:,1)w(1)+x(:,2)w(2);%输出

y

以上就是关于排列熵matlab如何绘制出图像全部的内容,包括:排列熵matlab如何绘制出图像、离散时间序列的几种频谱分析方法的MATLAB实现、100分!!!!急求matlab 程序设计 要求如下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10125680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存