2013-04-11 317 views
2

我有一个程序有函数和问题,返回值,它有太多的输出。Matlab函数返回值

像exempley:Y =文本答案来了

Error in text (line 2) 

if nargin == 0 

Output argument "array" (and maybe others) not assigned during call to " 
C:\Users\name\Documents\MATLAB\text.m>text". 

程序text.m读取包含像

为例几个名字和号码的txt文件:

约翰doughlas 15986

Filip duch 357852

等等。该程序将它们转换为15986 Doughlas John等。

function array = text(~) 
if nargin == 0 
dirr = '.'; 
end 
answer = dir(dirr); 
k=1; 
while k <= length(answer) 
    if answer(k).isdir 
     answer(k)=[]; 
    else 
     filename{k}=answer(k).name; 
     k=k+1; 
    end 
end 
chose=menu('choose file',filename); 
namn = char(filename(chose)); 
fid = fopen(namn, 'r');  
R = textscan(fid,'%s %s %s'); 
x=-1;            
k=0;            
while x <= 24         
     x = k + 1;          
     All = [R{3}{x},' ',R{1}{x},' ',R{2}{x}]; 
     disp(All)          
     k = k + 1;         
end             
fclose(fid); 

反正有没有从头开始解决问题?

感谢所有的答案!

回答

8

您可以在定义中指定函数输出参数,但是您不必在函数体中为其分配任何内容。

例如,在

function y = student(j)         

你的输出y。所以你必须指定y

在MATLAB中阅读关于functions的更多内容。

+0

谢谢你,我想出把它放在哪里,但无法弄清楚的text.m,它有很多输出。 – CSPTT 2013-04-12 12:36:50

+0

您可以使用'[x,y,z] =函数名(...)'返回一个函数的多个输出。或者您可以将所有输出组合到单元阵列或结构中。阅读文档,这是清楚的解释。并且不要调用函数'text',因为这个名字有一个内建的MATLAB函数。 – yuk 2013-04-12 14:43:18

+0

对不起,但我不能找到我要找的结果,也许我只是为了接近看到它或我是盲目的。但我阅读了文档,并得到了一些结果,但没有找到我想要的结果。 像为例: Y = 25 Y =号码name1,2,3,4,5等 Y = 号码NAME1 Y = 号码NAME2等。 – CSPTT 2013-04-14 14:10:47

0

这是一个工作示例。

第一部分是在文件名'functionA.m'中创建一个名为'functionA'的函数。然后把下面的代码里面:

function result = functionA(N,alpha) 
    result = 5; 
    return 
    end 

第二部分是创建另一个Matlab的文件(即高达你的名字。),或者甚至可以使用MATLAB命令窗口。然后运行下面的代码:

getresult = functionA(100,10); 
    getresult 

运行你会得到如下答案后:

ans = 
      5