sagittast83 发表于 2007-12-11 12:33

这个函数怎么不能调用

Function res=DLLtest(i)             %‘res’为函数返回值;‘i’为输入
fid=fopen('F:\核心\yy.txt','r');   %读入数据
tmp=fscanf(fid,'%f',);
fclose(fid);

for k=1:size(tmp,2)/2               %size的作用是取矩阵tmp的列数,
                                    %取行数的语句为:size(tmp,1)
   a(k,1:2)=tmp(k*2-1:k*2)';      %利用FOR循环语句将tmp数据转化成一个k*2的矩阵A
end
cdate=a(:,1);                         %提出A的第一列,再将其赋给cdate
pp=a(:,2);                            %提出A的第二列,再将其赋给pp
sdate=(cdate-mean(cdate))/std(cdate); %对读入的数据进行初始化处理

if i==0
    res= a;                           %设置返回值为原始数据                     
    bar(cdate,pp)                     %对原始数据绘制条形图
    xlabel('年度');
    ylabel('利润统计')
else
   logp2=polyfit(sdate,log10(pp),2);%对原始数据进行二次指数函数拟合
   logpred2=10.^polyval(logp2,sdate);
   logres2=log10(pp)-polyval(logp2,sdate);
   r=pp-10.^(polyval(logp2,sdate));
subplot(1,2,1)                     %创建子图一,绘制二次指数函数的拟合效果图
   semilogy(cdate,logpred2,'-',cdate,pp,'+');
   grid on
   xlabel('拟合结果')
subplot(1,2,2)                     %创建子图二,绘制二次指数函数的拟合残差图
   plot(cdate,r,'+')
   xlabel('拟合误差')
   res=std(r);                        %设置返回值为二次指数函数的拟合残差
end

sagittast83 发表于 2007-12-11 12:41

Attempt to execute SCRIPT function as a function.
脚本文件怎么样做为函数调用????????
谢谢!!!!!!!!

sigma665 发表于 2007-12-11 12:42

原帖由 sagittast83 于 2007-12-11 12:33 发表 http://www.chinavib.com/forum/images/common/back.gif
Function res=DLLtest(i)             %‘res’为函数返回值;‘i’为输入
fid=fopen('F:\核心\yy.txt','r');   %读入数据
tmp=fscanf(fid,'%f',);
fclose(fid);

for k=1:size(tmp,2)/2      ...

文件读进去了没,貌似不能有中文名

sagittast83 发表于 2007-12-11 12:45

把语句编入matlab中可以运行
就是把3段语句分开输入可以显示结果.

sagittast83 发表于 2007-12-11 12:49

一起编成函数 m文件调用就提示
Attempt to execute SCRIPT function as a function.
不懂为什么?

sigma665 发表于 2007-12-11 12:50

把中文改了试试呢

不要用函数名做文件名

[ 本帖最后由 sigma665 于 2007-12-11 12:53 编辑 ]

sagittast83 发表于 2007-12-11 12:54

不行啊 还是提示
Attempt to execute SCRIPT function as a function.

sigma665 发表于 2007-12-11 12:57

http://forum.vibunion.com/forum/vi ... p%3Bfilter%3Ddigest

这里面或许有你要的答案


2. 强烈建议大家在命名自己的函数名(更加准确应该说m文件名)时,在名称前面加上 my 等个人专用标识,即假如你要把你的函数命名为conv,则最好写成 myConv,否则容易与matlab自带的函数(m文件)名字重复而导致“Attempt to execute SCRIPT conv as a function”的错误!当你碰到这个错误时,可以在命令窗口中输入 which conv all 来看看到底有否重复命名了该函数,有的话,建议把自己命名的文件改名,保留 matlab 自带的文件。此外,命名文件名时,必须符合标识符的规范,即不能以数字开头等等,否则会出现莫名其妙的错误!

[ 本帖最后由 sigma665 于 2007-12-11 12:58 编辑 ]

sagittast83 发表于 2007-12-11 12:58

对不起,本帖要求阅读权限高于 10 才可浏览,请返回。
:'( :'(

sagittast83 发表于 2007-12-11 13:02

which 后提示也只有我编写的m文件啊

花如月 发表于 2007-12-11 13:10

回复 #1 sagittast83 的帖子

在命令行输入:DLLtest(5)试试看

eight 发表于 2007-12-11 13:23

按照 花版主 的指示如果还不行,则请保证m文件所在路径不要使用中文

sagittast83 发表于 2007-12-11 13:32

不行啊 依旧提示
Attempt to execute SCRIPT function as a function.

sagittast83 发表于 2007-12-11 13:37

:@( 语句应该没什么问题啊
在命令行中分开调就可以
编成m文件函数就bug了

eight 发表于 2007-12-11 13:37

原帖由 sagittast83 于 2007-12-11 13:32 发表 http://www.chinavib.com/forum/images/common/back.gif
不行啊 依旧提示
Attempt to execute SCRIPT function as a function.

matlab 区分大小写,请把 Function 改为 function
页: [1] 2
查看完整版本: 这个函数怎么不能调用