NMF-matlab

NMF-matlabmatlab练习程序(非负矩阵分解)  这个算法是Lee和Seung在1999年发表在nature杂志上的。具体论文看这里:http://www.seas.upenn.edu/~ddlee/Papers/nmf.pdf。  看不懂英文没关系,可以看这个中文的介绍:http://wenku.baidu.com/view/94c8af0bf78a6529647d5331.html。

大家好,又见面了,我是你们的朋友全栈君。

matlab练习程序(非负矩阵分解)

  这个算法是Lee和Seung在1999年发表在nature杂志上的。具体论文看这里:http://www.seas.upenn.edu/~ddlee/Papers/nmf.pdf

  看不懂英文没关系,可以看这个中文的介绍:http://wenku.baidu.com/view/94c8af0bf78a6529647d5331.html

  原理上面两篇文章已经很清楚了,我在按自己的理解介绍一下吧。

  通常矩阵分解如svd或其他什么的分解都会把矩阵分解为有正有负的矩阵,而他的这种分解方法就把矩阵完全分解成只有正数的矩阵,因为现实世界中如图像,负数是没什么意义的,所以这种只分解为正数矩阵的分解方法就很有意义了,要不也不会发在nature这样牛B的杂志上。

  这里是分解的公式:

NMF-matlab

  这里r是分解矩阵的秩,V是原矩阵的一个近似,W与H就是分解而成的两个矩阵。

  下面是W和H的求法,是一个迭代算法,初始的W与H是随机的就行了:

  NMF-matlab

  关于代码,我借鉴了这个博客的:http://fxy1211.blog.163.com/blog/static/68255322007826111015905/,真是太感谢这位博主了。

  下面是代码:

复制代码
clear all; close all; clc; V=double(imread('lena.jpg')); imshow(mat2gray(V)); [i u]=size(V); %计算V的规格 r=100; %设置分解矩阵的秩 W=rand(i,r); %初始化WH,为非负数 H=rand(r,u); maviter=100; %最大迭代次数 for iter=1:maviter W=W.*((V./(W*H))*H'); %注意这里的三个公式和文中的是对应的
    W=W./(ones(i,1)*sum(W)); H=H.*(W'*(V./(W*H)));
end img_V=W*H; figure; imshow(mat2gray(img_V));
复制代码

  下面是原图和重构后的效果,如果秩和迭代次数越大,那么重构后的图越接近原图:

NMF-matlab原图

NMF-matlab重构图

因为这个是看自己相关方向论文偶然在一篇论文的引用中看到了这个算法,所以就稍微了解了一下,肯定有不妥的地方,就这样吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148571.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021年河北高考成绩位次怎么查询,河北高考一分一段表2021,河北高考位次排名表…[通俗易懂]

    2021年河北高考成绩位次怎么查询,河北高考一分一段表2021,河北高考位次排名表…[通俗易懂]河北高考一分一段表它显示每一个分数在全省考生有多少名,能让你计算出自己的排位。目前的段表,是将全省所有考生的档案分(高考各科成绩+优惠加分)从高到低排列(分数相同的则为并列),再按每1分一段,统计“本段人数”;从本段向上一直到最高分段的所有“本段人数”相加,则为“累计人数”。一分一段表上显示出每一个分数全省的考生有多少名,这个数据的参考价值最大。2020年河北高考一分一段表会在成绩公布后一起公布,…

    2022年7月14日
    16
  • 免费好用的图片压缩网站,有这五个就够了(收藏备用)

    免费好用的图片压缩网站,有这五个就够了(收藏备用)前言当我们想要线上报名提交照片时,大小却超过范围,这时就需要压缩软件的帮助。但大多主流的软件可以压缩但想要下载就需要收费了,下面是五个国内外免费的压缩平台。一、OnlineImage优点:图片可以压缩90%以上,可以批量压缩,速度只需要几秒钟完全免费,无数量限制,支持绝大多数图片压缩格式缺点:不支持自定义图片大小压缩,广告比较多网站链接为:https://www.onlineimagetool.com/zh/二、Docsmall……

    2022年6月18日
    100
  • 自制头像生成器_dc动漫头像女

    自制头像生成器_dc动漫头像女tensorflow训练流程整合,DC_GAN原型机

    2022年8月1日
    4
  • StringUtils.isEmpty用法[通俗易懂]

    StringUtils.isEmpty用法[通俗易懂]转载出处:http://blog.csdn.net/ocean20/article/details/6674077StringUtils方法的操作对象是Java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应…

    2022年6月11日
    37
  • 激活pycharm方法(采用激活码激活)

    激活pycharm方法(采用激活码激活)1.在C:\Windows\System32\drivers\etc目录下hosts文件中最后一行加入:0.0.0.0account.jetbrains.com2.打开PyCharm选择Activationcode激活,然后复制下面的激活码点击激活。K71U8DBPNE-eyJsaWNlbnNlSWQiOiJLNzFVOERCUE5FIiwibGljZW5zZWVOYW1lIjoi…

    2022年10月22日
    1
  • github网速很慢(github很慢)

    下面是转载其他人的信息,实测通过换URL确实速度飞快!近日,我在Github上下载源码,真的鸡肋,慢的一匹,通过以下方式,让我下载Github速度飞快,因为刚好有代理,就用的第一种方式,而后面几种方式参考自网上的一些方案,自己也尝试了一下,有点用,就贴出来,给大家提升一下工作效率,如果您也有类似的问题,欢迎转发,收藏~同时,欢迎留言区写下自己用过或者本文没有提到的方案,一起完善~1.有代理只需要针对github设置代理即可,这里以ss为例子:#只对github.comgitconfig

    2022年4月18日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号