0

要将 java 与 matlab 链接,我使用了一个开源,Matlab Control google code 我收到此错误:Error: At least one END is missing: the statement may begin here.
从命令行 javac Dwtembed.java 运行此代码。
如果你复制粘贴下面的代码并检查,你会很清楚,你会明白我实际上在做什么。我真的希望能在这个问题上得到一些帮助。

import matlabcontrol.*;
class Dwtembed
{
    public static void main(String[] args) throws MatlabConnectionException,          MatlabInvocationException
    {
        //Create a proxy, which we will use to control MATLAB
        MatlabProxyFactory factory = new MatlabProxyFactory();
        MatlabProxy proxy = factory.getProxy();

        proxy.eval("file_name='lena.bmp';"); 
        proxy.eval("cover_object=double(imread(file_name));"); 
        proxy.eval("mc=size(cover_object,1);"); 
        proxy.eval("nc=size(cover_object,2);"); 
        proxy.eval("file_name='dmg2.bmp';"); 
        proxy.eval("message=double(imread(file_name));"); 
        proxy.eval("mm=size(message,1);"); 
        proxy.eval("nm=size(message,2);"); 
        proxy.eval("[ca,ch,cv,cd]=dwt2(cover_object,'haar');"); 
        proxy.eval("ca1=ca;"); 

        proxy.eval("qiangdu=1;"); 

        proxy.eval("for i=1:nm"); 
            proxy.eval("for j=1:nm"); 
                proxy.eval("if(message(i,j)==0)"); 
                    proxy.eval("ca1(i,j)=ca(i,j)+qiangdu;"); 
                proxy.eval("end"); 
            proxy.eval("end"); 
        proxy.eval("end"); 

        proxy.eval("watermarked_image=idwt2(ca1,ch,cv,cd,'haar');"); 
        proxy.eval("watermarked_image_round=round(watermarked_image);"); 
        proxy.eval("watermarked_image_uint8=uint8(watermarked_image_round);"); 
        proxy.eval("imshow(watermarked_image_uint8);"); 

        proxy.eval("figure(2);");
        proxy.eval("imshow(watermarked_image_uint8,[]);");
        proxy.eval("title('watermarked image');");
        proxy.eval("imwrite(watermarked_image_uint8,'dwt_watermarked.bmp','bmp');"); 
        proxy.eval("xsz=mc*nc*max(max(cover_object.^2))./sum(sum((cover_object-watermarked_image_round).^2));"); 
        proxy.eval("psnr=10*log10(xsz);");



    //Disconnect the proxy from MATLAB
    proxy.disconnect();
   }
}
4

1 回答 1

0

您不能像那样eval使用fors 和ifs,因为for i=1:nm它本身不是有效的 MATLAB 语句。你eval需要的东西是完整的 MATLAB 语句。

尝试将整个fororif语句放在一个eval.

于 2013-03-03T03:33:18.720 回答