tiantian0 发表于 2009-10-23 10:33:02

matlab6.5vc(dll)混编是否不支持load\importdata等函数?(此问也解决,另有问题需帮助)

本帖最后由 tiantian0 于 2009-10-28 09:23 编辑

matlab6.5vc(dll)混编是否不支持load\importdata等函数?
看过以前的有个帖子说混编时中文路径的问题,但是我使用英文名也不行,
m文件:
functionhuatu_test()
x=-10:0.1:10;
y=sin(x);
plot(x,y,'*');
t=load('-ascii', 'E:\shuju\30\01.asc');

在不使用load 函数这一行时,vc调用正确,但加了最后一行时,调用出错.
是不是matlab6.5\vc6(dll)混编时根本就不支持load函数,如果是的话,如何解决呢?

PS:asc数据如:01.asc
          0.0000      -0.349968
          0.0002      -0.423367
          0.0004      -0.376391
          0.0006      -0.267173
          0.0008      -0.142101
          0.0010         0.021726
          0.0012         0.229006
          0.0014         0.409861
          0.0016         0.473866
          0.0018         0.457424
          0.0020         0.480325
          0.0022         0.596589
          0.0024         0.759829
          0.0026         0.839687

zp2000 发表于 2009-10-23 14:48:36

混合编程的东西不是很清楚啊,你自己在VC里面写一个函数啊,调用fileopen的common dialog,然后在读取数据的过程中按照自己的格式来读取就可以了,要不了多少功夫,别在这个上面耽搁时间了

tiantian0 发表于 2009-10-23 19:12:16

本帖最后由 tiantian0 于 2009-10-23 19:13 编辑

编过,但是数据量太大了。

shunfly 发表于 2009-10-24 19:07:12

将textread源代码含which的语句注释掉,用textread代替load看看

taohe 发表于 2009-10-25 08:46:57

依稀记得使用matlab6.5,在混合编程时好像不支持load/save。不过我不能肯定。

好在没有必要必须使用load/save,还有其他的替代函数可以用的。比如shunfly提到的textread,等。或者看看本版前面刚被顶起来的关于文件读写的帖子。文件读写是很重要的功能,值得花点时间掌握。

shunfly 发表于 2009-10-25 11:58:33

LZ使用LOAD,却要用TEXTREAD的功能。而执意于要用LOAD。真是倔强。关于混合编程的很多思路不学习,而钻牛角。
依稀记得使用matlab6.5,在混合编程时好像不支持load/save。不过我不能肯定。

好在没有必要必须使用load/save,还有其他的替代函数可以用的。比如shunfly提到的textread,等。或者看看本版前面刚被顶起来的关于文 ...
taohe 发表于 2009-10-25 08:46 http://forum.simwe.com/images/common/back.gif

tiantian0 发表于 2009-10-25 12:55:02

TEXTREAD 也用过,就是提示WHICH的问题,我删除了一些,可能没删完,还是出错。
明天再去试试,谢谢大家!

tiantian0 发表于 2009-10-26 10:45:56

用textread 去掉WHICH语句可以了,但是还有其他一些函数混编不能使用.

shunfly 发表于 2009-10-26 17:10:33

http://forum.simwe.com/viewthread.php?tid=884867
看看这个
另外,没有人知道你所谓的还有一些函数无法混编,具体是哪些函数。。。

tiantian0 发表于 2009-10-26 18:16:28

谢谢,其它问题我先做尝试,不行再请教各位。

tiantian0 发表于 2009-10-28 09:19:21

本帖最后由 tiantian0 于 2009-10-28 09:21 编辑

函数应该没有问题了,但是加上一个循环嵌套后调用无响应,没加这个嵌套之前函数能被正确调用,那么这种混编方式是否不支持循环套循环的格式?或者说调用后计算速度很慢?

PS:在matlab里能够运行.如需看这段程序请留言.

shunfly 发表于 2009-10-28 20:08:41

搞笑吧?需要看这段程序还留言?
你这压根是不想解决问题,回帖的人永远比出贴的急
此贴,我不关注了。
你仔细瞧瞧版面FAQ中的A1,A2。。。。。。。。。

tiantian0 发表于 2009-10-29 10:45:53

不是这样的,我上面说的已经清楚了,关键是这种循环嵌套的结构有没有问题,与程序本身关系并不大,所以不是太有必要上传,因为matlab里边运行无问题。如果大家觉得有必要看的话我就发上来,因为程序不在我平时上网这个电脑里面,我需要从其他地方拷贝过来。

messenger 发表于 2009-10-29 10:59:42

是这样的,通常认为没有问题的那部份,恰恰是有问题的那部份。也许你在循环过程改变了程序本身的某个变量也说不定。

记得以前有人问为什么Matlab返回的参数不对,其实是他自己搞错了,把逗号写成句点了,这样Matlab将二个参数认成一个参数(元胞结构)了。

而且没有代码,看着总是发虚,不好发现问题,代码给出的信息量要多得多。

tiantian0 发表于 2009-10-29 14:33:02

本帖最后由 tiantian0 于 2009-10-31 12:05 编辑

代码:(pxa与f是同大小数组大家看看有什么问题没有.

messenger 发表于 2009-10-29 14:52:22

Ful也是数组吗?Ful、pxa与f 各是多少维的数组呀?

另外,原来哪段代码没有问题呀?是这段代码吗?
#                if((f0>=Ful(i))&&(f0<=Ful(i+1)))
#             %频率值距1/3倍频带下限小于delta_f,但距上限大于delta_f
#                  if((abs(f0-Ful(i))<delta_f)&&(abs(Ful(i+1)-f0)>delta_f))
#                      Pxa_W(i)=Pxa(j,1)*abs(f0-Ful(i));
#             %频率值距1/3倍频带上限小于delta_f,但距下限大于delta_f
#                  elseif((abs(Ful(i+1)-f0)<delta_f)&&(abs(Ful(i)-f0)>delta_f))
#                      Pxa_W(i)=Pxa(j,1)*(abs(f0-Ful(i+1))+delta_f);
#             %频率值距1/3倍频带上限、下限均小于delta_f
#                  elseif((abs(f0-Ful(i))<delta_f)&&(abs(Ful(i+1)-f0)<delta_f))
#                      Pxa_W(i)=Pxa(j,1)*(Ful(i+1)-Ful(i));
#             %频率值距1/3倍频带上限、下限均大于delta_f
#                  else
#                      Pxa_W(i)=Pxa(j,1)*delta_f;
#                  end
#               else
#                  Pxa_W(i)=0;
#               end
加上两个for循环后无响应?

taohe 发表于 2009-10-29 16:10:25

...那么这种混编方式是否不支持循环套循环的格式?或者说调用后计算速度很慢?

PS:在matlab里能够运行.如需看这段程序请留言.
tiantian0 发表于 2009-10-28 09:19 http://forum.simwe.com/images/common/back.gif

这两种假设似乎都不太可能吧,要不大家还费力弄混编岂不是浪费精力(精力是禁不起浪费的呀)。

好好调试一下你的程序,至少弄清楚有循环以后程序到底在干什么,比如那个循环变量的范围对吗等等。

tiantian0 发表于 2009-10-29 19:32:22

本帖最后由 tiantian0 于 2009-10-30 09:29 编辑

Ful也是数组吗?Ful、pxa与f 各是多少维的数组呀?

另外,原来哪段代码没有问题呀?是这段代码吗?
#                if((f0>=Ful(i))&&(f0
messenger 发表于 2009-10-29 14:52 http://forum.simwe.com/images/common/back.gif


FUL也是数组,35维的;pxa、f是同维数组12501维。原来的是另外一个问题,说两个循环的就是在这段代码。
删掉这段程序是可以调用并运行的,只有加上我发的这段程序后调用这段程序时无响应,,因为在matlab中可以运行,所以我还没有认真的“ taohe:好好调试一下你的程序,至少弄清楚有循环以后程序到底在干什么,比如那个循环变量的范围对吗等等”,明天去处理一下,先谢过了各位!

tiantian0 发表于 2009-10-30 10:37:38

今天检查了一下,这两个循环都没有问题,循环变量范围也唔错,matlab里面运行很正常。
而且就是在加上这段程序后调用无响应了

messenger 发表于 2009-10-30 13:17:21

觉得是因为你的循环次数太多了,你说pxa、f是同维数组12501维,如果二层嵌套的话,就要循环很多次了。
页: [1] 2
查看完整版本: matlab6.5vc(dll)混编是否不支持load\importdata等函数?(此问也解决,另有问题需帮助)