请问下面的matlab程序哪里出错了,为什么第一行就运行不出来?

function[f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)*f2(t)
%f:卷积积分f(t)对应的非零样值向量
%K:f(t)的对应时间向量
%f1:f1(t)的非零样值向量
%f2:f2(t)的非零样值向量
%k1:f1(t)的对应的时间向量
%k2:序列f2(t)的对应的时间向量
%p:抽样时间间隔
f=conv(f1,f2);
f=f*p;
k0=k1(1)+k2(1);
k3=length(f1)+length(f2)-2;
k=k0:p:k3*p;
subplot(2,2,1)
plot(k1,f1)
title('f1(t)')
xlabel('t')
ylabel('f1(t)')
subplot(2,2,2)
plot(k2,f2)
title('f2(t)')
xlabel('t')
ylabel('f2(t)')
subplot(2,2,3)
plot(k,f);
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h)
title('f(t)=f1(t)*f2(t)')
xlabel('t')
ylabel('f(t)')

第1个回答  2012-03-11
函数是不能在命令条里直接定义的。从图上看你在命令条(command line 或称 command prompt) 里直接拷贝进去的函数定义,所以会出现“function definitions are not permitted at prompt”的错误。新开一个M-文件,然后把这个函数拷贝到M-文件中,将文件保存为sconv.m。之后在命令条中输入:[f,k] = sconv(f1,f2,k1,k2,p) 来运行该函数。追问

我对matlab编程不是很熟悉,关于您的回答有些不太明白的地方。
新开一个M-文件,然后把这个函数拷贝到M-文件中,将文件保存为sconv.m 里面的函数是指程序里面的哪句?
之后在命令条中输入:[f,k] = sconv(f1,f2,k1,k2,p) 来运行该函数。 是把[f,k] = sconv(f1,f2,k1,k2,p)输在文件sconv.m里面吗?
希望能说下具体操作,万分感谢!

追答

原提问中拷贝的由 function 开始至结尾的全部内容就是这个函数的定义了。函数名称为 sconv, (f1,f2,k1,k2,p) 是这个函数的输入参数,[f,k] 是该函数的输出变量。把上面的所有内容拷贝到一个新m-文件里,然后将文件保存为 sconv.m (文件名要和函数名一致。)

运行该函数时,回到命令条,打入:[f,k] = sconv(1,2,3,4,5) ;这里面的数字(打个比方)就是输入参数f1,f2,k1,k2,p依次的取值了。电脑将参数值带到你刚刚建的 sconv 函数里进行运算,运算结果会存储在f, k两个变量中。

希望有所帮助~

%函数定义
function[f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)*f2(t)
%f:卷积积分f(t)对应的非零样值向量
%K:f(t)的对应时间向量
%f1:f1(t)的非零样值向量
%f2:f2(t)的非零样值向量
%k1:f1(t)的对应的时间向量
%k2:序列f2(t)的对应的时间向量
%p:抽样时间间隔
f=conv(f1,f2);
f=f*p;
k0=k1(1)+k2(1);
k3=length(f1)+length(f2)-2;
k=k0:p:k3*p;
subplot(2,2,1)
plot(k1,f1)
title('f1(t)')
xlabel('t')
ylabel('f1(t)')
subplot(2,2,2)
plot(k2,f2)
title('f2(t)')
xlabel('t')
ylabel('f2(t)')
subplot(2,2,3)
plot(k,f);
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h)
title('f(t)=f1(t)*f2(t)')
xlabel('t')
ylabel('f(t)')

追问

我以前没有学过matlab,我能不能加你QQ直接问您……谢谢……

本回答被提问者采纳