对图像进行emd分解程序得到各个imf分量

对图像进行emd分解程序得到各个imf分量,第1张

emdm文件

function imf = emd(x)

% Empiricial Mode Decomposition (Hilbert-Huang Transform)

% EMD分解或HHT变换

% 返回值为cell类型,依次为一次IMF、二次IMF、、最后残差

x = transpose(x(:));

imf = [];

while ~ismonotonic(x)

x1 = x;

sd = Inf;

while (sd > 01) || ~isimf(x1)

s1 = getspline(x1); % 极大值点样条曲线

s2 = -getspline(-x1); % 极小值点样条曲线

x2 = x1-(s1+s2)/2;

sd = sum((x1-x2)^2)/sum(x1^2);

x1 = x2;

end

imf{end+1} = x1;

x = x-x1;

end

imf{end+1} = x;

% 是否单调

function u = ismonotonic(x)

u1 = length(findpeaks(x))length(findpeaks(-x));

if u1 > 0

u = 0;

else

u = 1;

end

% 是否IMF分量

function u = isimf(x)

N = length(x);

u1 = sum(x(1:N-1)x(2:N) < 0); % 过零点的个数

u2 = length(findpeaks(x))+length(findpeaks(-x)); % 极值点的个数

if abs(u1-u2) > 1

u = 0;

else

u = 1;

end

% 据极大值点构造样条曲线

function s = getspline(x)

N = length(x);

p = findpeaks(x);

s = spline([0 p N+1],[0 x(p) 0],1:N);

这是对信号进行分解的程序,看看对你有没有帮助

文件扩展名 EMD 有 七 种文件类型,并且与 七 种不同的软件程序相关联,但主要相关联软件程序是由 FMJ-Software开发的 Awave Studio。 通常这些被格式化为 ABT Extended Module File。 EMD 文件通常被归类为 Audio Files。 其他文件类型可以是 Data Files 或 Text Files。

Windows 平台已支持 EMD 文件。 它们是台式计算机(和移动)设备兼容的。

%此版本为ALAN 版本的整合注释版

function imf = emd(x)

% Empiricial Mode Decomposition (Hilbert-Huang Transform)

% imf = emd(x)

% Func : findpeaks

x= transpose(x(:));%转置为行矩阵

imf = [];

while ~ismonotonic(x) %当x不是单调函数,分解终止条件

x1 = x;

sd = Inf;%均值

%直到x1满足IMF条件,得c1

while (sd > 01) | ~isimf(x1) %当标准偏差系数sd大于01或x1不是固有模态函数时,分量终止条件

s1 = getspline(x1);%上包络线

s2 = -getspline(-x1);%下包络线

x2 = x1-(s1+s2)/2;%此处的x2为文章中的h

sd = sum((x1-x2)^2)/sum(x1^2);

x1 = x2;

end

imf{end+1} = x1;

x = x-x1;

end

imf{end+1} = x;

% FUNCTIONS

function u = ismonotonic(x)

%u=0表示x不是单调函数,u=1表示x为单调的

u1 = length(findpeaks(x))length(findpeaks(-x));

if u1 > 0, u = 0;

else, u = 1; end

function u = isimf(x)

%u=0表示x不是固有模式函数,u=1表示x是固有模式函数

N = length(x);

u1 = sum(x(1:N-1)x(2:N) < 0);

u2 = length(findpeaks(x))+length(findpeaks(-x));

if abs(u1-u2) > 1, u = 0;

else, u = 1; end

function s = getspline(x)

%三次样条函数拟合成元数据包络线

N = length(x);

p = findpeaks(x);

s = spline([0 p N+1],[0 x(p) 0],1:N);

-------------------------------------------------------------------------------

--------------------------------------------------------------------------------

function n = findpeaks(x)

% Find peaks找到极值 ,n为极值点所在位置

% n = findpeaks(x)

n = find(diff(diff(x) > 0) < 0);

u = find(x(n+1) > x(n));

n(u) = n(u)+1;

------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------

function plot_hht00(x,Ts)

% 双边带调幅信号的EMD分解

% Plot the HHT

% plot_hht(x,Ts)

%

% :: Syntax

% The array(列) x is the input signal and Ts is the sampling period(取样周期)

% Example on use: [x,Fs] = wavread('Humwav');

% plot_hht(x(1:6000),1/Fs);

% Func : emd

% Get HHT

clear all;

close all;

Ts=00005;

t=0:Ts:10; % 采样率2000HZ

% 调幅信号

%x=sin(2pit)sin(40pit);

x=sin(2pit);

s1 = getspline(x);%上包络线

s2 = -getspline(-x);%上包络线

x1 = (s1+s2)/2;%此处的x2为文章中的h

figure;

plot(t,x);xlabel('Time'), ylabel('Amplitude');title('双边带调幅信号');hold on;

plot(t,s1,'-r');

plot(t,s2,'-r');

plot(t,x1,'g');

imf = emd(x);

for k = 1:length(imf)

b(k) = sum(imf{k}imf{k});

th = angle(hilbert(imf{k}));

d{k} = diff(th)/Ts/(2pi);

end

[u,v] = sort(-b);

b = 1-b/max(b);

% Set time-frequency plots

N = length(x);

c = linspace(0,(N-2)Ts,N-1);

%

figure;

for k = v(1:2)

plot(c,d{k},'k','Color',b([k k k]),'MarkerSize',3); hold on;

set(gca,'FontSize',8,'XLim',[0 c(end)],'YLim',[0 50]);%设置x、y轴句柄

xlabel('Time'), ylabel('Frequency');title('原信号时频图');

end

% Set IMF plots

M = length(imf);

N = length(x);

c = linspace(0,(N-1)Ts,N);

for k1 = 0:4:M-1

figure

for k2 = 1:min(4,M-k1),

subplot(4,1,k2),

plot(c,imf{k1+k2});

set(gca,'FontSize',8,'XLim',[0 c(end)]);

title('EMD分解结果');

end

xlabel('Time');

end

你的问题可以化为下面向量的问题

已知a=(1,1,1),b=(-1,1,1),c=a×u,d=c×u,

c和d的夹角是50°,c和v的夹角是55°,d和v的夹角是49°,

u⊥v,|u|=1,|v|=1

求u,v

题中的a,b,c,d,u,v均为三维向量,×表示向量内积,|u|表示向量u的模

其中,向量b对应你以前的(m,n,p),向量u对应你以前的(h,k,l),向量v对应你以前的(u,v,w)

由上题,c=a×u,d=c×u可得c⊥u,d⊥u又u⊥v,且c,d,v有相同的起点即坐标原点,从而c,d,v在同一平面上且有相同的起点,且均与u垂直

所以c,d,v之间的夹角必定满足某个等式,回到题上也就是说,55°=50°+5°,

进一步说,你给的条件是矛盾的,所以matlab找不到解

就算你给出的条件是对的,由于你给出的前三个方程并非完全独立的,也不足以确定你想要的结果

追问

这是其中的一部分条件,我就是想问一下,怎么去编写一个不确定的参数,让它可以在矩阵中使用,还不出现Inner matrix dimensions must agree等错误

以上就是关于对图像进行emd分解程序得到各个imf分量全部的内容,包括:对图像进行emd分解程序得到各个imf分量、emd格式什么软件能打开、谁可以给我一个emd分解的matlab程序。只需要emd分解的。谢谢了!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存