1

由于在同一个文件中不可能有一个脚本和一个函数定义,我想回显我想在脚本中附加的函数,这样我就得到了一个带有函数代码的脚本,然后是这个函数的一些用法。

例如 -

函数1.m

function [result] = func1(x)
    result=sqrt(x) ;  
end

脚本1.m

echo(func1.m) ; 
display(func1(9))  

script1.m的期望输出

function [result] = func1(x)
        result=sqrt(x) ;  
    end
display(func1(9)) 
3

你有什么想法吗?

4

3 回答 3

7

既然已经提出了一个复杂的解决方案,为什么不说明显而易见的呢?

Matlab 有一个内置命令,可以完全满足您的要求。它被称为type

>> type('mean')

会给你这个:

function y = mean(x,dim)
%MEAN   Average or mean value.
%   For vectors, MEAN(X) is the mean value of the elements in X. For
%   matrices, MEAN(X) is a row vector containing the mean value of
%   each column.  For N-D arrays, MEAN(X) is the mean value of the
%   elements along the first non-singleton dimension of X.
%
%   MEAN(X,DIM) takes the mean along the dimension DIM of X. 
%
%   Example: If X = [0 1 2
%                    3 4 5]
%
%   then mean(X,1) is [1.5 2.5 3.5] and mean(X,2) is [1
%                                                     4]
%
%   Class support for input X:
%      float: double, single
%
%   See also MEDIAN, STD, MIN, MAX, VAR, COV, MODE.

%   Copyright 1984-2005 The MathWorks, Inc. 
%   $Revision: 5.17.4.3 $  $Date: 2005/05/31 16:30:46 $

if nargin==1, 
  % Determine which dimension SUM will use
  dim = min(find(size(x)~=1));
  if isempty(dim), dim = 1; end

  y = sum(x)/size(x,dim);
else
  y = sum(x,dim)/size(x,dim);
end
于 2013-06-26T09:13:24.700 回答
1

你可以使用这个:

function echo(mfile)
    filename=which(mfile);
    if isempty(filename)
        fprintf('Invalid input - check you are inputting a string.');
        return;
    end
    fid=fopen(filename,'r');
    if (fid<0)
        fprintf('Couldn''t open file.');
    end
    file=fread(fid,Inf);
    fclose(fid);
    fprintf('%s',file);
end

这将打开一个文件,读取它并打印它。请注意,您需要将输入作为字符串提供,即用单引号括起来,并且需要在末尾添加“.m”:

echo('fread.m')

不是

echo(fread.m) % This won't work
echo('fread') % This won't work
于 2013-06-26T09:02:50.317 回答
1

只是为了完整起见,还有dbtype前面的行号。

于 2013-06-26T10:10:28.893 回答