登录论坛

查看完整版本 : 【求助】变量毛病!!!


luoyunyong
2007-06-09, 19:26
[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);"
为什么会出现这种情况呢?

ciji1995
2007-06-09, 20:32
x没赋值啊,当然不存在x这个变量了

luoyunyong
2007-06-10, 09:28
这是在edit里编辑的呵,是一个被调用的函数,会在调入之前给他值的,但是还是显示:“??? Input argument "x" is undefined.“

keyman
2007-06-11, 16:15
我不知道你在那里给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
跟上面一样,现在就可以调入任何的矩阵,就可以得出结果了!!!
有什么问题就找我吧!!!

luoyunyong
2007-06-12, 08:40
我不知道你在那里给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);
...
太感谢你了,解说的非常详细,敬礼:)