声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2487|回复: 15

[综合讨论] 这个函数怎么不能调用

 关闭 [复制链接]
发表于 2007-12-11 12:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
Function res=DLLtest(i)             %‘res’为函数返回值;‘i’为输入
fid=fopen('F:\核心\yy.txt','r');     %读入数据
tmp=fscanf(fid,'%f',[1,32]);
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

DLLtest.m

1.34 KB, 下载次数: 10

回复
分享到:

使用道具 举报

 楼主| 发表于 2007-12-11 12:41 | 显示全部楼层
Attempt to execute SCRIPT function as a function.
脚本文件怎么样做为函数调用????????
谢谢!!!!!!!!
发表于 2007-12-11 12:42 | 显示全部楼层
原帖由 sagittast83 于 2007-12-11 12:33 发表
Function res=DLLtest(i)             %‘res’为函数返回值;‘i’为输入
fid=fopen('F:\核心\yy.txt','r');     %读入数据
tmp=fscanf(fid,'%f',[1,32]);
fclose(fid);

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


文件读进去了没,貌似不能有中文名
 楼主| 发表于 2007-12-11 12:45 | 显示全部楼层
把语句编入matlab中可以运行
就是把3段语句分开输入可以显示结果.
 楼主| 发表于 2007-12-11 12:49 | 显示全部楼层
一起编成函数 m文件调用就提示
Attempt to execute SCRIPT function as a function.
不懂为什么?
发表于 2007-12-11 12:50 | 显示全部楼层
把中文改了试试呢

不要用函数名做文件名

[ 本帖最后由 sigma665 于 2007-12-11 12:53 编辑 ]
 楼主| 发表于 2007-12-11 12:54 | 显示全部楼层
不行啊 还是提示
Attempt to execute SCRIPT function as a function.
发表于 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 编辑 ]
 楼主| 发表于 2007-12-11 12:58 | 显示全部楼层
对不起,本帖要求阅读权限高于 10 才可浏览,请返回。
:'( :'(
 楼主| 发表于 2007-12-11 13:02 | 显示全部楼层
which 后提示也只有我编写的m文件啊
发表于 2007-12-11 13:10 | 显示全部楼层

回复 #1 sagittast83 的帖子

在命令行输入:DLLtest(5)试试看
发表于 2007-12-11 13:23 | 显示全部楼层
按照 花版主 的指示如果还不行,则请保证m文件所在路径不要使用中文
 楼主| 发表于 2007-12-11 13:32 | 显示全部楼层
不行啊 依旧提示
Attempt to execute SCRIPT function as a function.
 楼主| 发表于 2007-12-11 13:37 | 显示全部楼层
:@( 语句应该没什么问题啊
在命令行中分开调就可以
编成m文件函数就bug了
发表于 2007-12-11 13:37 | 显示全部楼层
原帖由 sagittast83 于 2007-12-11 13:32 发表
不行啊 依旧提示
Attempt to execute SCRIPT function as a function.


matlab 区分大小写,请把 Function 改为 function
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 12:33 , Processed in 0.066915 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表