精华内容
下载资源
问答
  • Matlab卷积和源代码

    2010-04-20 15:24:36
    Matlab卷积和源代码 利用matlab编写卷积和
  • matlab卷积运算程序

    2009-03-30 13:24:29
    matlab卷积运算程序,不利用conv进行计算
  • 转载于:https://www.cnblogs.com/WHaoL/p/6155544.html

     

    转载于:https://www.cnblogs.com/WHaoL/p/6155544.html

    展开全文
  • 其原理还是利用卷积可以改变原始数据矩阵中的数值大小。本文主要介绍两种最为常见的二维卷积滤波方法:"均值滤波"与"中值滤波"。均值滤波与中值滤波原理原理一句话:原来卷积是两个小矩阵的"点乘再相加(卷积神经网络...

    前言

    不论是野外数据采集,还是图像处理,实际二维数据都会存在噪声!用卷积对二维数据降噪是十分常用的一种方法!其原理还是利用卷积可以改变原始数据矩阵中的数值大小。本文主要介绍两种最为常见的二维卷积滤波方法:"均值滤波"与"中值滤波"。

    均值滤波与中值滤波原理

    原理一句话:原来卷积是两个小矩阵的"点乘再相加(卷积神经网络里的操作)",现在是"点乘相加后求平均(均值滤波)"和"点乘后取中值(中值滤波)"。图1非常明显易懂:

    cf69d2bf62b6

    图1:均值滤波与中值滤波原理图

    了解了原理,可以很简单的用matlab实现二维卷积滤波的程序。

    噪声例子

    本文主要使用两种常见的、matlab自带的:"高斯随机噪声"和"椒盐黑白噪声"。直接使用一条语句就可以为原始图像加噪声:

    data = imread('zxc.jpg'); % 数据——最好比卷积核的尺寸大

    data = im2double(data); % 原图像进来是uint8,矩阵运算时double 故要转一下

    data = rgb2grey(data); % 转为灰度图像方便

    noise_data1 = imnoise(data, 'gaussian', 0.2); % 加入高斯噪声的命令

    noise_data2 = imnoise(data, 'salt & pepper', 0.3); % 加入椒盐噪声的命令

    对应的噪声所带来的影响如下:图2是原始灰度图像,图3是分别加了两种噪声后的效果:

    cf69d2bf62b6

    图2:原始灰度图像

    cf69d2bf62b6

    图3:左图是加了高斯噪声效果图,右图是加了椒盐噪声效果图

    均值滤波与中值滤波效果

    分别用这两种滤波方法对这两种噪声进行滤波,看看效果怎么样:图4是均值滤波对两种噪声的处理效果,图5是中值滤波对两种噪声的处理效果。

    cf69d2bf62b6

    图4:均值滤波分别对高斯、椒盐噪声处理效果

    cf69d2bf62b6

    图5:中值滤波分别对高斯、椒盐噪声处理效果

    效果对比:

    对高斯噪声,两种滤波方法都还不错,但很明显均值滤波自身的缺点把图像模糊了;

    对椒盐噪声,很明显中值滤波要比均值滤波很的多!虽然中值滤波结果中还是一些"盐噪声(白点)"去不掉!但其图像恢复效果已经很不错了。(注:对椒盐噪声的去噪,只有!只有!中值滤波效果不错)。

    Matlab实现

    均值滤波实现如下:

    clc; clear;

    data = imread('zxc.jpg'); % 数据——最好比卷积核的尺寸大

    data = im2double(data); % 原图像进来是uint8,矩阵运算时double 故要转一下

    % rgb转为灰度图像

    data = rgb2gray(data);

    figure(1);

    imshow(data);

    title('原始灰度值图像');

    % 高斯噪声: 均值为m,方差为var的高斯噪声加到图像中 var越大越模糊

    % noise_data = imnoise(data, 'gaussian', 0.2);

    % 椒盐噪声: 0.1是全图10%的程度受污染

    noise_data = imnoise(data, 'salt & pepper', 0.3);

    % noise_data = im2double(noise_data); % 这里记得要先转为double类型

    figure(2);

    imshow(noise_data);

    title('加入"高斯噪声"后图像')

    % 开始卷积均值滤波:

    % x = zeros(3,3)+1; % 卷积核——必须是方阵且为奇数行/列

    x = zeros(5,5)+1;

    x = x/length(x(:)); % 均值专用

    x = rot90(rot90(x)); % 新的卷积核

    % 核的尺寸

    size_x = size(x);

    row_x = size_x(1); % 核的行数

    col_x = size_x(2); % 核的列数

    % 数据的尺寸

    size_data = size(data);

    row_data = size_data(1); % 数据的行数

    col_data = size_data(2); % 数据的列数

    % 核的中心元素:

    centerx_row = round(row_x/2);

    centerx_col = round(col_x/2);

    centerx = x(centerx_row,centerx_col);

    % 对原始数据扩边:

    data_tmp = zeros(row_data+row_x-1,col_data+row_x-1);

    data_tmp(centerx_row:centerx_row+row_data-1,centerx_row:centerx_row+col_data-1) = noise_data;

    data_k = data_tmp;

    % 扩边后新数据矩阵尺寸:

    size_data_k = size(data_k);

    row_data_k = size_data_k(1);

    col_data_k = size_data_k(2);

    % m = centerx_row:row_data+row_x-2

    % 开始卷积计算: m n 是新数据矩阵的正常索引

    result = zeros(row_data_k,col_data_k);

    % m n一般卷积步长都是1

    for m = centerx_row:centerx_row+row_data-1

    for n = centerx_row:centerx_row+col_data-1

    % tt是临时与卷积核大小相同的数据中的部分矩阵:

    tt = data_k(m-(centerx_row-1):m+(centerx_row-1),n-(centerx_row-1):n+(centerx_row-1));

    % juan是中间每一次卷积计算求和的中间量:

    juan = sum(x.*tt);

    result(m,n) = sum(juan(:));

    end

    end

    % 求掉之前扩边的0:

    result = result(centerx_row:centerx_row+row_data-1,centerx_row:centerx_row+col_data-1);

    % 做图:

    figure(3);

    imshow(result)

    title('二维卷积均值滤波后图像');

    中值滤波实现如下:只需修改两个for循环那部分

    % m n一般卷积步长都是1

    for m = centerx_row:centerx_row+row_data-1

    for n = centerx_row:centerx_row+col_data-1

    % tt是临时与卷积核大小相同的数据中的部分矩阵:

    tt = data_k(m-(centerx_row-1):m+(centerx_row-1),n-(centerx_row-1):n+(centerx_row-1));

    % juan是中间每一次卷积计算求和的中间量:

    juan = median(x.*tt);

    result(m,n) = median(juan(:));

    end

    end

    结尾附上自行车的原始图片,方便大家直接测试:

    文中用到的图片 提取码:i20n

    展开全文
  • 利用MATLAB编写卷积函数myconv一、实验目的1.了解MATLAB的基本操作。2.利用MATLAB实现正弦信号采样;3.利用MATLAB编写卷积函数myconv。二、实验条件PC机,MATLAB7.0三、实验内容(一)函数文件与脚本文件的定义,正弦...

    利用MATLAB编写卷积函数myconv

    一、实验目的

    1.了解MATLAB的基本操作。

    2.利用MATLAB实现正弦信号采样;

    3.利用MATLAB编写卷积函数myconv。

    二、实验条件

    PC机,MATLAB7.0

    三、实验内容

    (一)函数文件与脚本文件的定义,正弦信号的采样

    函数文件代码:

    function seqs=mysampling(Fs,L,Fx)

    t=1/Fs:1/Fs:L/Fs;

    t1=0:0.001:L/Fs;

    x=sin(2*pi*Fx*t);

    x1=sin(2*pi*Fx*t1);

    plot(t1,x1),hold on;stem(t,x,'r');hold off;

    脚本文件代码:

    Fs=40;

    Fx=20;

    L=15;

    for Fx=20:10:80,

    mysampling(Fs,L,Fx);

    pause,

    End

    运行结果:

    实验中遇到的问题及改正:

    function seqs=mysampling(Fs,L,Fx)

    t=1/Fs:1/Fs:L/Fs;

    x=sin(2*pi*Fx*t);

    plot(t,x),hold on;stem(t,x,'r');hold off;

    一开始并没有添加t1=0:0.001:L/Fs;x1=sin(2*pi*Fx*t1);两行代码,想利用t=1/Fs:1/Fs:L/Fs;x=sin(2*pi*Fx*t);生成的函数直接作为需要抽样的原函数,但是t的采样间隔太大,没法生成平滑的正弦曲线,所以导致最后仿真出来的图像中出现不光滑的正弦曲线。经过思考找出问题后,另外编写了一个正弦函数,设定的采样间隔为0.001后,仿真出来的图像中就出现了光滑的正弦曲线。

    编写卷积函数myconv

    Conv函数代码:

    function y=myconv1(h,x)

    n=length(x);

    k=length(h); %定义序列长度

    for m=1:1:(n-1)

    A(m)=0;

    end

    for m=n:1:n+k-1

    A(m)=h(m-n+1); %给h序列添(n-1)个0

    end

    B=hankel(A);

    for i=1:1:n

    C(:,i)=B(:,i);%抽取B矩阵中从第1列到第n列的矩阵

    end

    D=fliplr(C); %C矩阵左右翻转

    E=D'; %转置

    y(n+k-1)=0;

    for a=1:1:n+k-1

    for b=1:1:n

    numble(b)=x(b)*E(b,a);

    y(a)=numble(b)+y(a);

    end

    numble=[0 0 0]; %清零

    end

    y

    stem(y);

    脚本代码:

    x=[1 -2 3 1];

    h=[-3 2 -1 4]; %定义x,h序列

    myconv1(h,x);

    运行结果:

    四、实验结论和讨论

    通过本次实验运用MATLAB实现采样以及自行编写卷积函数,基本能熟悉运用MATLAB来进行实验,并且对于采样以及卷积的认识更加的深入。

    在进行本次卷积实验之前,我一直只知道利用MATLAB本身自有的conv函数来进行卷积的运算,并没有想过conv函数的卷积运算功能是如何实现的。通过这次自己编写卷积函数的代码,不仅熟知了hankel,fliplr以及转置等MATLAB中及其有用的用法,而且对于卷积函数有了更深一步的了解。

    并且通过自己所写的myconv1函数与系统自带函数conv的比较,发现自己所编写的函数的运行时间要多于conv函数运行的时间,意识到MATLAB的深奥之处,也发现自己的能力还远远不足,需要在进一步的努力。

    展开全文
  • 利用Matlab编写一维卷积函数CONV_new()

    千次阅读 2020-03-11 17:10:06
    利用Matlab编写一维卷积函数CONV_new()

    利用Matlab编写一维卷积函数CONV_new(),利用内置函数conv1()检查,比较二者运行时间

    1.代码如下:CONV_new:

    function z=CONV_new(x,y)
    z=zeros(1,length(x)+length(y)-1);
    for i=1:(length(x)+length(y)-1)
        for j=max(1,i+1-length(y)):min(i,length(x))
           z(i)=z(i)+x(j)*y(i+1-j);
        end
    end
    end
    

    2.检测功能:
    定义两个一维矩阵A,B:

    A=[1,2,3,4,5];
    B=[3,2,4,5,6];
    Y1=conv(A,B);
    Y2=CONV_new(A,B);
    

    3.得到两个卷积之后的矩阵Y1,Y2:相等

    得到的Y1,Y2矩阵

    4.运行时间:利用两个10000维矩阵查看运行时长差距,运行时点击‘运行并计时’按钮:
    CONV_new运行时间
    conv运行时间

    展开全文
  • 利用卷积计算多项式相乘系数
  • matlab中如何去除高振幅的干扰信号?​www.zhihu.com题主没有给出采样频率,或采样时间,数据中没有,我们就假定采样时间为 0.01s。第一步, 电压信号读入,然后傅里叶分析,得到原信号频谱图。从图中第三个子图可以...
  • 利用Matlab工具箱求解两个信号的卷积,理解卷积的概念,并与理论计算结果进行比较。连续时间信号卷积可以用函数conv来求解两个信号的卷积运算结果,注意卷积结果时间范围的上下限范围分别是两个信
  • 作者:Chuan Bai 编译:1+1=61前言金融市场主要处理时间序列方面的问题,围绕时间序列预测有大量的算法和工具。今天,我们使用CNN来基于回归进行预测,并...如果我们能够准确地预测波动率,我们就可以利用它做些事情...
  • matlab 验证卷积定理 卷积定理 一实验目的 通过本实验验证卷积定理掌握利用 DFT 和 FFT 计算线性卷积的方法 二 实验原理 时域圆周卷积在频域上相当于两序列 DFT 的相乘因而可以采用 FFT 的算 法来计算圆周卷积当...
  • 卷积定理 一实验目的 通过本实验验证卷积定理掌握利用 DFT 和 FFT 计算线性卷积的方法 二 实验原理 时域圆周卷积在频域上相当于两序列 DFT 的相乘因而可以采用 FFT 的 算法来计算圆周卷积当满足 L ?N1 ?N 2 ?1时线性...
  • 1、编制x(n)=n+1 0≤n≤31 和 h(n)=R32(n) 的C程序。...3、求y(n)=x(n)*h(n)的卷积。 4、求y(n)=IDFT[X(k)•H(k)] (注意补点)。 5、编制计算x(n)=n+1 0≤n≤16 的FFT程序。 6、将n扩展为32点,求x(n)=n+1 的FFT程序。
  • 对于三维卷积,比如A矩阵大小为[2,3,3],B矩阵大小为[2,3],计算A与B的卷积结果就是过程就是对于A矩阵的第三维的每一维分别卷积,等价于利用conv2利用卷积核B对A每一维卷积三次。看代码:>>...
  • Matlab利用自定义函数求序列卷积 Matlab利用自定义函数求序列卷积) 该方法利用循环求合法求卷积,具体程序如下: clc; clear all; x=[1,2,0,-1,3,2]; Kx=[-2,-1,0,1,2,3]; h=[1,-1,1]; Kh=[0,1,2]; N1=Kx(1)+Kh...
  • Matlab卷积编码完整的系统-bpsk.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-ReadMe.txt 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-tenTotwo.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-produce_G.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • Matlab卷积编码完整的系统-DPSK.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • PAGE PAGE 3 2007级学生数字通信 原理课程设计 数字通信原理课程设计报告书 ...设计任务 利用Matlab技术来设计一个卷积码译码器计算误码率 设计要求 1.要求能熟练地运用Matlab技术对卷积码译码器进行仿真 2.运用Matl
  • Matlab卷积编码完整的系统-datagenerate.m 利用 bpsk调制 高斯信道 卷积码 分析系统性能的 完整程序
  • 此篇是利用matlab对caffemodel的卷积核进行可视化。只介绍了卷积核的可视化,不涉及特征图的可视化。 是参考此博客: http://blog.csdn.net/zb1165048017/article/details/52643188前期准备,需要两个东西 1. 模型...
  • 在朋友的强烈建议下,写一篇关于利用CNN卷积神经网络实现基于MATLAB的手写数字识别系统的设计的博客。 一、关于卷积神经网络 关于卷积神经网络我写过一篇文章单独介绍,可以参考:手写数字识别问题(3)——详解卷积...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 274
精华内容 109
关键字:

利用matlab卷积

matlab 订阅