Category Archives: Tech

多元回归 / 多元拟合matlab实现

MatLab内置了很多拟合的功能,比如分布、指数、多项式等拟合。对应的函数是fit。基本用法是:

cfun = fit(xdata, ydata, libname)

其中xdata是自变量x序列,ydata是因变量,libname 是模型名,比如’power1’是 y= a* x ^b 形式,Matlab内置了很多模型,可以从帮助文档里看到。对于这些拟合,MatLab有个图形工作叫 cftool,在命令行里敲入可以打开。

然而我们有时候需要做二元、多元拟合。

二元拟合,即使用模型 z = f(x, y),在MatLab也叫面拟合 (Surface fitting),有专门的图形工具 sftool,命令敲入sftool可以打开。

但如果是多元拟合,这时我们需要懂一点代码的工作。

其实不管一元、二元,代码级别是一致的。使用的都是fit命令。

对于使用 y = a* x^b这样内置的指数一元拟合,我们可以看到其libname 叫’power1’。所以采用以下命令:

cfun = fit(x, y, ‘power1’)

即从已知x、序列是得到拟合函数。coeffvalues(cfun)可以得到拟合参数,即这个例子里的a、b。如果还需要得到拟合指标,使用[cfun gof] = fit(x,y, ‘power1’),返回的gof包括了R squre、RMSE等多种指标。

对于二元拟合,比如 使用 z= a + b*sin(m*pi*x*y) + c*exp(-(w*y)^2模型进行拟合,采用类似的代码:

ft = fittype( ‘a + b*sin(m*pi*x*y) + c*exp(-(w*y)^2)’, ‘indep’, {‘x’, ‘y’}, ‘depend’, ‘z’ );

opts = fitoptions( ft );

opts.Display = ‘Off’;

opts.Lower = [-Inf -Inf -Inf -Inf -Inf];

opts.StartPoint = [0.741864193163802 0.681571628918889 0.811658042300087 0.275716137656952 0.738979809065491];

opts.Upper = [Inf Inf Inf Inf Inf];

opts.Weights = zeros(1,0);

[fitresult, gof] = fit( [x, y], z, ft, opts );

其中fittype自定义了需要的二元函数。其中’indep’指明自变量、’depend’指明因变量。即通过fittype构造一个二元拟合模型,说明其中的自变量和因变量,定义拟合的选项,这些选项经常可以不要专门指定,采用默认的即可。然后使用 fit的扩展形式得到拟合函数。

对于多元拟合,一个函数是 regress多元线性回归,另一个是nlinfit 非线性回归。两者都在statistic toolbox里。regress的基本形式是

b = regress(y, X)

其中X是多个自变量,y是因变量。

对于多元非线性拟合,可以使用nlinfit,基本形式是:

beta = nlinfit(X,Y,modelfun,beta0)

其中modelfun构造非线性多元模型,比如以下例子:

beta = nlinfit(X,y,@hougen,beta0)

使用一个hougen函数作为拟合模型,这个函数可以自行构建。

Matlab也提供了非线性多元拟合的图形化工具nlintool。

此外类似的还有 fitnlm函数提供了类似nlinfit的非线性回归,用法与nlinfit类似,但对返回结果进行包装,可以更简便的使用诸如predict等函数对非线性模型进行预报计算。

Image(1)

Plant vs Zombie 2的iOS多设备同步

Image

pvz 2还是一如既往的好玩精美,希望能够同时在iphone和ipad上玩。pvz 2支持icloud的同步,包括game center状态和进度的同步。

我在两台ios 7的设备上同步成功,但如果其中一台是 ios 6的ipad上只能同步成功game center状态而无法同步进度。所以尽管pvz 2开发团队没有明说必须同样的ios版本,但事实上可能需要同样的ios版本。

步骤描述如下:

1. 在iphone (ios 7)上从apple store里下载pvz 2 新安装。

* 注意我只测试了pvz 2的英文版本,对于植物大战僵尸2的中文版 没有测试,但应该也是可行的。

2. 在iphone 上进入settings > icloud > document and data 使之打开。

* 在document and data下面应该可以看到僵尸的图标(没有文字,应该是个小bug),确认此项也是打开状态

* 与icloud下的 storage & backup无关,此项可以是关闭状态。

3. 在iphone上,打开 pvz 2,填入年龄和名字比如dd。开始玩游戏。

* pvz2 会自动把信息往icloud里上传,只需要等一些时间即可。

4. 现在切换到ipad (ios 7)。安装同一个 pvz 2版本。

* 注意ipad 也必须是以同一个apple id 登录进game center。如果不是同个id,需要把ipad的game center id切换到iphone的gc id上来。

* game center id一般与apple store 的id 一致。

5. 在ipad 上重复步骤2,打开ipad上的icloud > document and data设置。

6. 在ipad上打开 pvz 2,填入年龄和名字比如hh。稍等,点名字右边的人物图标,在弹出的列表里可以看到来自iphone的dd。

* 来自iphone 的用户dd即包括iphone的进度。

* 注意如果pvz 2已经打开,要先将之从后台关掉,然后重新打开,这时pvz 2 会有个读取进度的起始画面。

Continue reading

域名迁移

域名nanzt.info 在购买国外空间时一并注册,现在因为不再使用那个空间,所以打算迁移出来,换句话说,从原空间提供商 hostmonster.com 迁移到 现 namecheap.com。

namecheap是很有名的域名注册商。迁移的第一年有打折的价格。

整个迁移过程大概在15分钟内完成。

1. 准备工作

1.1 去hostmonster域名管理界面取消locked 状态,即允许进行域名迁移

1.2 从hostmonster得到 epp码。

1.3 从hostmonster里去掉隐私保护(如果有的话)

1.4 确认有nanzt.info 管理邮箱的访问权,这十分重要!

2. 注册namecheap

2.1 从namecheap注册一个帐号

2.2 购买一年的domain transfer费用,约9.66美金。(一般可以找到打折码)

3. 按namecheap domain transfer步骤进行迁移

按步骤一步一步下来,直到结束。注意填入 epp码。

4. 检查nanzt.info注册的管理邮箱

4.1 有从namecheap发来的要求授权的信,进入链接,选择授权。如果不授权,会导致迁移失败。

4.2 有从hostmonster发来的要求授权的信,进入链接,选择授权。此授权信如果不主动去点,将在7天后自动授权。

5. 成功后进入namecheap的域名管理界面

5.1 lock此域名

5.2 namecheap提供whoisguard免费功能,用上。

5.3 检查域名解释器 (dns)是否正确。

我使用 freedns的免费域名解释。

namecheap提供了自己的nameserver,所以点击 transfer DNS back to us,然后配置dns records。

btw,namecheap提供的配置界面十分简洁强大。

至此迁移完成,约一刻钟。

Image

iphone 5无法连接到computer

我自己用的iphone 5,在别的laptop上都可以正常连接,点trust后可以访问iphone内容,但在我的laptop上有提示trust or not,但点trust后找不到apple iphone的存储。

使用programs and features将以下内容卸载掉,

1. iTunes (如果有的话)

2. Apple Software Update

3. Apple Mobile Device Support

4. Bonjour 

5. Apple Application Support (iTunes 9 or later)

然后重启windows 7。重新插上iphone 5,发现trust后即可正常访问。

以上被卸载的内容,如果需要,重新安装即可。

MATLAB之正则表达式

([email protected])

这种文本文件很大,比如我测试的样本文件,一共1281889行,约61.7MB,其余文件有超过120M的。对于这种大文件,手工处理十分费劲,必须要写代码处理。

因此流程很简单:

  1. 找到第一个Cyclic Acquisition,将此前的全部行,放到比如字符串s1;
  2. 从s1中移去preload data部分(包括头信息和数据),得到s2;
  3. 从s2中移去hold data 剖分(包括头信息和数据),得到s3;
  4. 从s3中移去多余的Data Acquisition头信息,即只保留第一个Data Acquisition头信息,得到s4;
  5. 将s4输出到a_static.dat。
  6. 得到1-14行头信息;
  7. 得到第一个Cyclic Acquisition及以后的全部行
  8. 合并6、7得到的字符串
  9. 输出到a_dynamic.dat。

所以这里的关键是如何得到我们需要的字符串,或者将某些字符串移去。一个很好的办法是使用正则表达式(regular expression),MATLAB里的函数是regexp。另外有regexprep是用于将匹配上的字符串用指定字符串替代,比如应用在步骤2、3、4。

本例演示了在MATLAB里使用正则表达式从文本中提取或替换子串。演示了regexp、regexprep的使用。本例也演示了对多个文件批处理的实现。

完整见附件PDF。

用gmail管理多个邮箱的信件

我的case是

  • 工作邮箱: [email protected]
  • 临时工作邮箱, 这是到美国大学访问他们给的, 美国这边留的是这个邮箱: [email protected]
  • gmail, 在iphone上安装了其手机客户端

希望:

  • 发到临时工作邮箱的信,自动转到”工作邮箱”
  • “工作邮箱”的信自动转到gmail
  • gmail回复时,如果是来自”工作邮箱”的,使用工作邮箱回复,否则使用gmail 回复.

我是这样配置的,

  1. 临时工作邮箱是ms exchange,所以在学校profile里配置forwarding address,指到”工作邮箱”. 
  2. 在工作邮箱里配置forwarding address到 gmail
  3. 在gmail时settings > Accounts > Send mail as: 添加工作邮箱, 注意把 treat as alias 的勾去掉. 使用gmail的邮件发送服务器. 配置完成后, 去工作邮箱检查来自gmail的一个确认信. 确认后完成.
  4. 在步骤3里,Send mail as下的when replying to a message, 选择reply from the same address the messgge was sent to.
  5. 完成!

注意在iphone里不要使用默认的Mail,而是从app store里下载gmail客户端. 然后长按底端固屏的mail图标,将之移到上面的屏幕,将gmail移下来放在mail本来的位置. 

IMG_5132

如何在美国看电影: 技术方案

前面写了一个叫“如何在美国看电影”的博文,收到几个邮件,咨询具体的技术方案。我答应有时间会总结一下。Here we go.

关键材料:

  • Astrill VPN: 收费VPN,每年约360人民币以上。
  • 迅雷/迅雷看看:下载工具,购买VIP,每月10块。
  • Sandboxie:安全隔离工具,免费版本足够。
  • Google Chrome:浏览器,免费

几个网站:

  • BT网站:piratebay.se
  • 电影网站:www.longbuluo.com
  • 电影英文字幕网站:subscene.com

流程:

  1. 下载迅雷最新版本。
  2. 打开astrill vpn,切换到OpenVPN模式,选择里面带星号的服务器(即这些服务器支持bt,迅雷等p2p),比如我选择的是 *Canada 1,速度很快。注意不要选美国的服务器,这是因为迅雷软件不能在美国使用。
  3. 右键点击下载到的迅雷安装文件,选择Run sandboxed,将迅雷安装到sandboxie里面。 迅雷vip也需要大陆ip,所以使用astrill 切换到中国大陆的服务器进行购买。
  4. 打开sandboxie control,选择Sandbox > DefaultBox > Sandboxed > Run Web Browser,打开Chrome浏览器
  5. 访问龙部落等电影网站,找到喜欢的电影,可以直接用迅雷下载,但往往是中文字幕。如果要看英文字幕电影,则
  6. 根据提供的电影英文名,从piratebay里搜索,找到此bt种子,迅雷下载
  7. 迅雷下载时,打开高速通道,和离线模式,这时下载速度往往能到1M以上
  8. 可以使用迅雷的边下边看功能,十分流畅。
  9. 如果要自身不带英文字幕(如.avi),从subscene下载对应的英文字幕,迅雷看看看有很强大的字幕功能,可以加载字幕,及调整字幕显示延时等效果。
  10. 重复5-9步骤,尽兴看电影。
  11. 如果不想看了,关闭sandboxie (file >terminate all programs),则完全关掉了迅雷等影响系统的软件,不会在后台运行。如果要重复观看,重复步骤4-9。
  12. 如果需要,在sandboxie control里,sandbox > defaultBox > delete contents,将迅雷等软件和电影全部删除,不留一点痕迹。如果再次观看,重复步骤3-9,即重新安装迅雷及下载。
  13. 如果要保存电影,记得将此电影recover到sandbox外,即 sandbox > defaultbox > quick recovery

以上方案,使用一个加拿大的ip,进行p2p高速下载一些可能涉及版权问题的电影,从而回避了一些潜在的麻烦,也最大程度保证了操作系统的干净和安全。以上步骤,看起来繁琐,但熟悉了,其实十分方便。

但注意,无论如何,请不要用学校的网络进行下载。如果是在家庭网络,则已经是十分安全的了。

我应朋友要求给了一个技术方案,但有必要交待一句,技术方案不代表我下载过有版权问题的影视。

SpaceSniffer: 找出哪个文件/夹占了最大的空间

我使用的是笔记本有500GB空间,尽管如此,还是经常感觉空间不够用。全部的数据我定时备份到外部硬盘,所以当空间不够用时,我会把笔记本里的已经备份的一些占用很大空间的文件夹或者文件给移去。这时,需要一个如spacesniffer这样的工具,快速准确的将我硬盘里的文件夹和文件大小找出来,告诉我哪个文件和文件夹占了我最大的空间。

spacesniffer是个免费软件,并且是绿色便携无须安装。地址是,

http://www.uderzo.it/main_products/space_sniffer/

如图所示是我硬盘上DOWNLOADS目录下的文件夹和文件大小分布,十分直观易用。spacesniffer告诉我几个影片占了我很大的空间,我应用优先移除这些影片来释放空间。spacesniffer的操作很简单,双击一个文件夹可以进一步放大至此文件夹,可以通过工具栏上的向左键返回上层文件夹,在每个文件和文件夹上右键有相应的便捷菜单。spacesniffer提供了过滤器只显示符合要求的文件和文件夹。

强烈推荐。

Image

deltacopy 与 truecrypt

truecrypt是十分优秀的开源加密工具。truecry deltacopy 与 truecrypt pt生成的file container的变化是可以被deltacopy捕捉到,并进行同步的。但deltacopy默认的捕捉变化信息是根据time stamp和size,truecrypt file container 无论里面的内容是否变化,container本身的time stamp和size不发生变化,这时,deltacopy会认为container没有发生变化而不进行同步。我们可以通过增加 -c 开关强迫 deltacopy通过checksum (md5) 进行变化的捕捉。

-c 开关可以在 additional parameters里面进行设置 (如图)。需要注意的是,打开这个开关会显著降低对比的速度。

2013-11-22_170654

所以另一个可能的解决方案是让truecrypt反应contrainer的修改时间,从而使得container的变化能被deltacopy捕捉。幸运的是,当前的truecrypt版本提供了这个功能。从truecrypt的 settings > preferences > Windows下,把 preserve modification timestamp of file container的打勾(默认)去掉。然后当file container内容有修改,其timestamp会发生变化,这样就可以不必加 -c 参数就可以捕捉到变化。

Image

如何在美国看电影

美国版权意识十分严,可不能随便用bt或者迅雷,稍不小心轻者警告信重者罚单飘然而至。在学校里看尤其不允许,严重的可能学都上不成。但习惯了国内各种p2p的影音软件,而囊中羞涩,还是得想想办法。

在线视频网站是允许的,一般讲如果在线视频网站里有侵权的内容,问题是网站的,看的人没有问题。所以youtube等都可以看。但从美国上youtube就知道,里面的电影多数都是收费的。少量过了版权保护期限的才免费。

百度、youku等国内网站是禁止美国ip访问的,这些网站上有很多侵权的东西,所以从美国是看不了这些网站上的电影的。同样的,多数国内的视频点播软件也是禁止了美国的IP。

所以正常情况,在美国我们不能用p2p下载软件如bt、迅雷,也看不了youku、tudou视频和pplive等点播软件的侵权影像。

一个能使得在美国安全看电影的技术方案是vpn + sandboxie。

vpn 打开到openvpn模式,使得将自己的ip切换到美国外的国家,如canada甚至中国。

sandboxie使得将迅雷等p2p下载或点播软件彻底关掉。这是因为安装了迅雷等,即使不使用也有可能上传一些侵权内容,此外如百度影音、快播更是随时有可能往你的机器里安装乱七八糟的东西。为了安全起见,强烈建议把这类软件安装到sandboxie隔壁模式,随时清除。

ImageImage