日期:2014-05-17  浏览次数:21147 次

新手求教C#与MATLAB混编:如何将textbox.TEXT转换成MWArray
小弟需要用C#中调用matlab混合编程,C#部分代码如下,其中倒数第三、四排是实例化一个我自己在MATLAB中建立的DEMO类,并调用其中的antenna_translation_bf函数。编译能通过。现在的问题是,如果我对该函数的后四个参数直接赋予数值(红色的代码),程序能正常运行,而如果我将textbox.text值赋予该函数,则提示“发生未处理的WIN32异常”!我想问题的原因就在于antenna_translation_bf的参数是MWArray型的,不知道怎么把textbox.text转换成MWArray。我尝试过在通过加MWArray强制转换,但不行。请大家多多指教!
  MWArray[] jd = new MWArray[4];
   
 // jd[0] = textBox1.Text;
 // jd[1] = textBox2.Text;
 // jd[2] = textBox3.Text;
 // jd[3] = textBox4.Text;

  jd[0] = 30;
jd[1] = 90;
jd[2] = 60;
jd[3] = 45;

  antenna_trans.demo axis1 =new antenna_trans.demo(); //实例化一个MATLAB中的DEMO类
  MWArray[] axis=axis1.antenna_translation_bf(2,jd[0],jd[1],jd[2],jd[3]); 
  textBox5.Text = axis[0].ToString();
  textBox6.Text = axis[1].ToString();

------解决方案--------------------
你这个不能直接用MWArray强制转换,必须用MWNumericArray这个进行一下转换,MWNumericArray是连接MWArray和c#中数值型数据的的中间类型。
代码改成:
antenna_trans.demo axis1 =new antenna_trans.demo(); //实例化一个MATLAB中的DEMO类
MWArray[] axis=axis1.antenna_translation_bf((MWNumericArray)2,
(MWNumericArray)Convert.ToDouble(textBox1.Text),
(MWNumericArray)Convert.ToDouble(textBox2.Text),
(MWNumericArray)Convert.ToDouble(textBox3.Text));
你代码中的axis你确定是一个MWArray类型的数组么?MWArray类型貌似直接可以表示向量矩阵什么的,不知道你这个什么意思