一天都不省心,一天都不甘心

image

这玩意是最近在干的活计,红色圈圈是最近几个礼拜着重解决的事情。搞了好几个礼拜,这两个圈圈一个都没解决。本来今天下午吃饭的时候以为回到办公室加个半小时班就能搞定右下角这个红圈圈了——结果回到家干到10点半——我自己被干倒了

——实在不知道MATLAB传出来的图像数据在Java里怎么用JPanel显示出来。

又是一个周末

image

周末从周五开始,过得一点都不平静,所有的事情都乱七八糟堆在脑子里,X和W两个兔崽子周五下班之后让我送到了地铁站才说下周要出差,整整一周不来研究院;房子装修要搞一搞清楚流程的细节,材料,还有人工;设备上的硬盘数据是当前十万火急的紧要事;明天Y到研究院来报到,实验室的工位还不够;实验室一大堆废品要报废——真够烦人的,搞得人没有时间做正事。

image

上周领悟到最近在要做的事情是把两个圈圈里面的事情做出来,然而这周只有大约4个小时在琢磨右下角的那个圈圈里面的那个朝上的箭头,基本上这个圈圈里面的问题是解决了。

不得不吐槽一下MATLAB的售后服务。

本来从MATLAB环境出来我需要解决2个问题:数值传递(numeric data)和图像传递(image illustration),数值传递的问题从MATLAB文档和bing.com上基本上找到套路了,只有图像传递的问题一直搞不定,MATLAB JA的文档里只是给出了这样的MATLAB代码描述:


h = figure;
set(h, ‘Visible’, ‘off’);
surf(peaks);
set(h, ‘Color’, [.8,.9,1]);
set(h, ‘Position’, [0, 0, width, height]);
view([rotation, elevation]);
returnByteArray = figToImStream(‘figHandle’, h, ‘imageFormat’, ‘png’,  `outputType’, `int8′);


这个让人很纠结,看起来figure肯定是返回了一个图像或者图像窗口的handle,事实证明figure返回的就是下面这个窗体的handle——但是MATLAB JA的文档没有明说;surf(peaks)毫无疑问是在当前的figure窗口里绘制peaks的图像了,从set和view两个函数的效果来看,set和view自然是对当前figure进行操作了——但是view函数也不没有要求h这个变量,所以也是猜的。

MATLAB的示例代码只给出了surf函数在figure窗体中的绘图,那么平时常用的plot函数呢?是不是也是在figure窗体中绘图?

本来这个事情是很好弄的,给MATLAB的售后打电话,问一下MATLAB绘图操作是不是这个principal:

所有的MATLAB绘图操作,都会在一个figure对象(不知道MATLAB是不是这么称呼的)中绘制图像,如果需要对图像作出修整,就可以在MATLAB函数库寻找operation(figHandle, para, …)这样的函数对figure进行操作,最后通过figToImStream函数输出字节数组。

image

结果MATLAB的售后收到我的邮件,询问了我的电话,给我打来电话说,我们公司没有购买MATLAB JA的模块,所以不能回答 …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… …… Broken heartBroken heartBroken heart

既然如此,只要自己上网搜了。在bing中搜:matlab plot get the handle of figure,会找到MATLAB的一页文档:http://cn.mathworks.com/help/matlab/ref/gcf.html

哦哦,就是gcf函数,通过gcf函数,就可以写出这样的代码:


x = [any 1-d array];
y= [array or matrix];
plot(x, y);
figHandle = gcf;
set(figHandle, ‘Color’, [0.8, 0.2, 0.8]);
view([rotation, elevation]);
imageByteArray = figToImStream(‘figHandle’, figHandle, …
‘imageFormat’, ‘png’, …
‘outputType’, ‘int8’);


imageByteArray是Java环境中可以使用的图像字节数组。

到今天为止,在技术可行性上,Analyze client这边只剩下JAVA-EXCEL, JAVA-POWERPOINT的互操作要解决。