⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 juanji_2.asv

📁 计算一维和二维卷积,基本可以替代Matlab中的conv和conv2函数,程序很方便就可以移植成C语言..
💻 ASV
字号:
%%####求离散的二维卷积####%%
clc;
clear all;
%%将f和h维数补齐#####%%%
f=[1,2;3,4];
h=[-1,1;-2,2];

M=2+2-1; N=2+2-1;
[mf,nf]=size(f);
for i=1:M
    for j=1:N
        if (i>mf) |(j>nf)
            fe(i,j)=0;
        else
            fe(i,j)=f(i,j);
        end
    end
end
[mh,nh]=size(h);
for i=1:M
    for j=1:N
        if (i>mh) |(j>nh)
            he(i,j)=0;
        else
            he(i,j)=h(i,j);
        end
    end
end
%%%%%%%%%%%

%%%构造列矢量F###%%%%
[mfe,nfe]=size(fe);
for i=1:mfe
    for j=1:nfe
        F(nfe*(i-1)+j)=fe(i,j);
    end
end
%%%%%%%%%%%%%%%%%%%%%

%%%构造块循环矩阵#####%%%%%
%   求取单个子块Hi,然后利用H[n*(mH-1+nH-1)%m+i,m*(nH-1)+j]=Hi(i,j)
%   求得整个移动后的循环块
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[mhe,nhe]=size(he);
m=mhe;n=nhe;

for mH=1:m

    he_Next=he(mH,:)';
    Hi(:,1)=he_Next;
    for i=1:mhe-1
         he_Tmp=he_Next(nhe);
            for j=1:nhe-1
                he_Next(nhe-j+1)=he_Next(nhe-j);      
            end
         he_Next(1)=he_Tmp;
         Hi(:,i+1)=he_Next;
    end
    Hi
    [mHi,nHi]=size(Hi);
    for nH=1:n
        for i=1:mHi
            for j=1:nHi
                H(n*mod((mH-1+nH-1),m)+i,m*(nH-1)+j)=Hi(i,j);
            end
        end
    end
    
end
H
%%%%%%%%%%%%%%%%%%%%%%%%%%
g=H*F'


g=conv2(f,h)



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -