小比丘
随笔- 27  文章- 0  评论- 0 
博客园  首页  新随笔  联系  管理  订阅 订阅
2012年5月7日
Tupper's self-referential formula

Link: http://en.wikipedia.org/wiki/Tupper's_self-referential_formula


code(matlab)

% use the symbolic toolbox to represent the big integer k 
k =  sym(['960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350' ... 
    '718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995' ... 
    '165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183' ... 
    '454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874' ... 
    '461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014' ... 
    '655997933798537483143786841806593422227898388722980000748404719']); 
 
[x,y] = meshgrid(0:1:106, 0:1:16); 
 
% evaluate the tupper formula 
tupper = rem(floor(floor((y+k)/17) .* 2.^(-17*x - rem((y+k), 17))), 2); 
 
% convert from symbolic to Matlab's native double precision 
tupper = double(tupper); 
 
% display it! 
image(fliplr((1-tupper)*255)); 
colormap gray 
axis equal 
 
title('Tupper''s (not-so-)self-referential formula!'); 
set(gca, 'XTick', [], 'YTick', []); 

code(java)

function (x,y) {
  // floor(y/17)  <br/>
  var v = dup(y);
  divInt_(v,17);
  
  //negative exponent of 2, rewritten as a bitwise right shift.    <br/>
  var e = mult(x, k17);
  add_(e, mod(y,k17));
  
  var sh = parseInt(bigInt2str(e,10));
  if (sh>0) {
        rightShift_(v, sh-1);
        //final modulo to recover pixel bit.    <br/>
      mod_(v, k4);
      return greater(v,k1);
  } else {
        //final modulo to recover pixel bit.    <br/>
      mod_(v, k2);
      return greater(v,k0);
  }
}
Plot ranges:
X:[ 0, 105]
Y:[ 960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719, 960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404735]

 

posted @ 2012-05-07 18:22 小比丘 阅读(90) 评论(0) 编辑
2011年12月7日
Word2007中快速插入分隔线

      有些朋友常常需要在Word 2007文档内容中加上一条横跨整页的分隔线,不过总是找不可快速的方法来实现。通常,在Word 2007中加入横线,是在“常用”功能区里单击“段落”组别中的“水平线”按钮。不过里面只有一种样式的线条可供选择,用户或许会觉得不太合适。

      其实,在Word 2007文档中加分隔线的方法十分简单,只要直接用键盘输入3个“-”号后再敲回车键,就会得到一条细横线;输入3个“_”号,则会得到粗横线;此外,输入3个“=”、“*”、“~”及“#”,也会得到不同样式的横线哦。

      另外,如果你不想Word 2007自动将这些符号变成横线,则可以单击横线旁边的闪电图标打开设置菜单,点选“撤消边框线”一项,即可将横线还原成符号。或者,你也可以点选“停止自动创建边框线”项目来停用这项功能。

posted @ 2011-12-07 14:52 小比丘 阅读(69) 评论(0) 编辑
2011年12月4日
matlab conv2 filter2 imfilter2

1、MATLAB中提供了卷积运算的函数命令conv2,其语法格式为: 
C = conv2(A,B) 
C = conv2(A,B)返回矩阵A和B的二维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的大小为(ma+mb+1)×(na+nb+1)。

 
2、MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为: 
Y = filter2(h,X) 
其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如: 
其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。 
Fspecial函数用于创建预定义的滤波算子,其语法格式为: 
h = fspecial(type) 
h = fspecial(type,parameters) 
参数type制定算子类型,parameters指定相应的参数,具体格式为: 
type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。 
type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5

posted @ 2011-12-04 18:27 小比丘 阅读(140) 评论(0) 编辑
2011年12月2日
MATLAB二维正态分布图

clc
clear
close all

mu=[0,0];% 均值向量
Sigma=[1 0.8;0.8 1];% 协方差矩阵
[X,Y]=meshgrid(-3:0.1:3,-3:0.1:3);%在XOY面上,产生网格数据
p=mvnpdf([X(:) Y(:)],mu,Sigma);%求取联合概率密度,相当于Z轴
p=reshape(p,size(X));%将Z值对应到相应的坐标上

figure
set(gcf,'Position',get(gcf,'Position').*[1 1 1.3 1])

subplot(2,3,[1 2 4 5])
surf(X,Y,p),axis tight,title('二维正态分布图')
subplot(2,3,3)
surf(X,Y,p),view(2),axis tight,title('在XOY面上的投影')
subplot(2,3,6)
surf(X,Y,p),view([0 0]),axis tight,title('在XOZ面上的投影')

2D Gaussian Distribution

posted @ 2011-12-02 18:44 小比丘 阅读(222) 评论(0) 编辑
最大后验估计和最大似然估计

上学期,在学习《信号检测与估计理论》这门课程是就接触了:
最大后验估计(maximum a posteriori probability estimate, 简称MAP)和最大似然估计(maximum-likelihood estimation, 简称MLE)。
学的时候没打弄明白其原理,就会按照书上的例子,照猫画虎,应付一下考试!不过最近要用到这两个东西了,所以从新学习了。

其实这两个参数估计方法计算起来都很简单。关键在于如何理解其原理,就是要问一下:问什么要这么估计?这么估计有什么道理在?
下面是我自己的理解,说得过去,但不知道对不对?
假设你得到某个或者某些特定的观察数据 x,然后需要根据x ,估计未知的总体参数 θ。

一个自然的想法就是:在所有可能的θ取值中,逐个寻找,直到找到一个值\widehat{\theta},能够让你获得观测数据x的“可能性”最大。
实际上就是寻找θ使概率P(x, θ)最大。

对于MAP来说,θ是已知先验概率密度函数P(θ)的随机变量。

对于MLE来说,θ是非随机变量或者分布未知的随机变量,这两种情况都可以认为P(θ)均匀分布的,即P(θ)=C。

 

下面来个具体的例子:

假设有五个袋子,各袋中都有无限量的饼干(樱桃口味或柠檬口味),已知五个袋子中两种口味的比例分别是

樱桃 100%

樱桃 75% + 柠檬 25%

樱桃 50% + 柠檬 50%

樱桃 25% + 柠檬 75%

柠檬 100%

如果只有如上所述条件,那问从同一个袋子中连续拿到2个柠檬饼干,那么这个袋子最有可能是上述五个的哪一个?

我们首先采用最大似然估计来解这个问题,写出似然函数。假设从袋子中能拿出柠檬饼干的概率为p(我们通过这个概率p来确定是从哪个袋子中拿出来的),则似然函数可以写作

由于p的取值是一个离散值,即上面描述中的0,25%,50%,75%,1。我们只需要评估一下这五个值哪个值使得似然函数最大即可,得到为袋子5。这里便是最大似然估计的结果。

上述最大似然估计有一个问题,就是没有考虑到模型本身的概率分布,下面我们扩展这个饼干的问题。

假设拿到袋子1或5的机率都是0.1,拿到2或4的机率都是0.2,拿到3的机率是0.4,那同样上述问题的答案呢?这个时候就变MAP了。我们根据公式写出我们的MAP函数。

根据题意的描述可知,p的取值分别为0,25%,50%,75%,1,g的取值分别为0.1,0.2,0.4,0.2,0.1.分别计算出MAP函数的结果为:0,0.0125,0.1,0.1125,0.1.
由上可知,通过MAP估计可得结果是从第四个袋子中取得的最高。

posted @ 2011-12-02 00:59 小比丘 阅读(66) 评论(0) 编辑
2011年11月25日
Albert Einstein says

If we knew what we were doing, it wouldn't be called research, would it? -- Albert Einstein
Computers are incredibly fast, accurate and stupid. Human beings are incredibly slow, inaccurate and brilliant. Together they are powerful beyond imagination. -- Albert Einstein

posted @ 2011-11-25 23:44 小比丘 阅读(10) 评论(0) 编辑
2011年11月24日
计算n次幂的C算法
摘要: 下面是使用C语言计算an(a任意实数,n是正整数)的最快算法。它利用了测试一个数是奇数在计算机上是非常容易的,和通过简单的移所有位向右来除以 2 的事实。步骤 1,初始化某个变量y:= 1, k:= n, f:= a步骤 2,测试 k如果k 为 0,跳转步骤 7步骤 3,(k 不是 0,测试 k 是否为偶数)如果k 是偶数,跳转步骤 5步骤 4,(k 是奇数,乘入它)y: =y*f步骤 5,(k 除以 2 / 忽略余数,通过移位做除法,平方 f)k:= k右移1 位 f:= f * f步骤 6,(循环)回到步骤 2步骤 7,(完成,y 是结果 = an)返回y在C语言中,你可以写如下算法: .阅读全文
posted @ 2011-11-24 14:36 小比丘 阅读(43) 评论(0) 编辑
2011年11月22日
各种之父
摘要: 开源之父:Richard StallmanUnix之父:Ken Thompson, Dennis RitchieLinux之父:Linus TovaldsC语言之父:Dennis RitchieC++之父:Bjarne StroustrupJAVA之父:James Gosling人工智能之父:John McCarthy阅读全文
posted @ 2011-11-22 22:02 小比丘 阅读(21) 评论(0) 编辑
2011年11月19日
数学概念(集合,数环,数域,线性空间,线性变换)
摘要: 集合(Set)定义:集合(或简称集)是基本的数学概念,它是集合论的研究对象。最简单的说法,即是在最原始的集合论─朴素集合论─中的定义,集合就是“一堆东西”。集合里的“东西”,叫作元素。数环(number ring)定义:设S是复数集的非空子集。如果S中的数对任意两个数的和、差、积(没有商)仍属于S,则称S是一个数环。例如整数集Z就是一个数环,有理数集Q、实数集R、复数集C等都是数环。性质:1. 任何数环都包含数零(即零环是最小的数环)。2. 设S是一个数环。若a∈S ,则na∈S(n∈Z)。3. 若M,N都是数环,则M∩N也是数环。数域(number field)定义1:设F是一个数环,如果对阅读全文
posted @ 2011-11-19 16:20 小比丘 阅读(146) 评论(0) 编辑
2011年11月18日
UNIX简介
摘要: UNIX ,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由Ken Thompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。简介 UNIX操作系统,是美国AT&T公司于1971年在PDP-11上运行的操作系统。具有多用户、多任务的特点,支持多种处理器架构,最早由肯·汤普逊(Kenneth Lane Thompson)、丹尼斯·里奇(Dennis MacAlistair Ritchie)和Douglas McIlroy于1969年在AT&T阅读全文
posted @ 2011-11-18 23:28 小比丘 阅读(38) 评论(0) 编辑
仅列出标题  下一页
Copyright ©2012 小比丘