Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2007-06-09, 19:26   #1
luoyunyong
初级会员
 
注册日期: 2007-06-09
帖子: 4
声望力: 0
luoyunyong 正向着好的方向发展
难过 【求助】变量毛病!!!

[m,n]=size(x);
if m==1
m=n;
end
s1=sum(x);s2=sum(x.^2);
mean1=s1/m;
sdtev=sqrt(s2/m-mean1.^2);
这是我编的程序,运行时出现
              "??? Undefined function or variable "x".

              Error in ==> stat1 at 1
               [m,n]=size(x);"
为什么会出现这种情况呢?
luoyunyong 当前离线   回复时引用此帖
旧 2007-06-09, 20:32   #2
ciji1995
游客
 
帖子: n/a
默认

x没赋值啊,当然不存在x这个变量了
  回复时引用此帖
旧 2007-06-10, 09:28   #3
luoyunyong
初级会员
 
注册日期: 2007-06-09
帖子: 4
声望力: 0
luoyunyong 正向着好的方向发展
默认

这是在edit里编辑的呵,是一个被调用的函数,会在调入之前给他值的,但是还是显示:“??? Input argument "x" is undefined.“
luoyunyong 当前离线   回复时引用此帖
旧 2007-06-11, 16:15   #4
keyman
初级会员
 
keyman 的头像
 
注册日期: 2007-05-19
帖子: 13
声望力: 18
keyman 正向着好的方向发展
默认

我不知道你在那里给x调入数据的,如果在一开始的时候给它调入,就可以运行,其程序可以为:
clear;clc
x=[11 22 33 44 55 66 77 88 99];
[m,n]=size(x);
if m==1
m=n;
end
s1=sum(x);s2=sum(x.^2);
mean1=s1/m;
sdtev=sqrt(s2/m-mean1.^2)
其结果:

sdtev =

28.4019
如果你不是在这个时候调入的话,而且要它运行的话可以在一开始就这样:
syms x
加了这个就可以运行了
如果你想做个函数的话,在任何时候都可以调入运行,可以这样:
function y=abc(x)
[m,n]=size(x);
if m==1
m=n;
end
s1=sum(x);s2=sum(x.^2);
mean1=s1/m;
sdtev=sqrt(s2/m-mean1.^2)
不过你要注意,其文件名要是abc.m
如果是其他的就会有你刚才的错误!!!
如果直接运行是跟你有同样的错误,不过不要怕,没问题的,运行时要这样调入:
x=[11 22 33 44 55 66 77 88 99];abc(x)
其结果为:
sdtev =

28.4019
跟上面一样,现在就可以调入任何的矩阵,就可以得出结果了!!!
有什么问题就找我吧!!!
keyman 当前离线   回复时引用此帖
旧 2007-06-12, 08:40   #5
luoyunyong
初级会员
 
注册日期: 2007-06-09
帖子: 4
声望力: 0
luoyunyong 正向着好的方向发展
默认

引用:
作者: keyman 查看帖子
我不知道你在那里给x调入数据的,如果在一开始的时候给它调入,就可以运行,其程序可以为:
clear;clc
x=[11 22 33 44 55 66 77 88 99];
[m,n]=size(x);
if m==1
m=n;
end
s1=sum(x);s2=sum(x.^2);
...
太感谢你了,解说的非常详细,敬礼
luoyunyong 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 15:57


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.