-1

マルチスペクトル画像があり、質問があります。この種の画像を読み取ることができる機能コードをインターネットで見つけました。問題は、次のエラーを受け取ったことです。

??? function [lan_data] = lanread('montana.lan')
    |
Error: Function definitions are not
permitted in this context.

また、「lanread」コマンドのヘルプを確認すると、次の情報が表示されました。 ">> help landread

ランドリードが見つかりません。」

このコマンドが存在しない可能性はありますか?私はそれについてあまり多くの情報を見つけていません。

前もって感謝します、

PD)これは機能コードです。

function [lan_data] = lanread('montana.lan','C:\formato_lan')
% LANREAD Read Landsat data file type .lan
% Ex: im = lanread('montana.lan')
% size(im) = [m,n,d];
    % (From landsatdemo in the image analysis toolbox.)

% $Id: lanread.m 3325 2007-04-06 15:52:34Z finn $

if (nargin<2), thepath = []; end
if isempty(thepath)
  [p,n,e]=fileparts(which('fms150path'));
  thepath= {fullfile('.',filesep),...
            fullfile(p,filesep,'data',filesep),...
            fullfile(p,filesep,'data',filesep,'protected',filesep),...
            fullfile(p,filesep,'data',filesep,'protected',filesep, ...
                     'lan',filesep),...
            ''};
elseif ischar(thepath)
  thepath = {thepath};
end

fid = -1;
if (fid<0)
  for path_idx=1:length(thepath)
    filename = sprintf('%s%s',thepath{path_idx},lan_filename);
    fid = fopen(filename,'r');
    if (fid>=0), break; end
  end
  if (fid<0) % If not found anywhere
    error(sprintf('Could not open file: %s',filename));
  end
end

% find out how big the image is based on file size,
% assuming square image, 7 bands
nbands = 7;
fseek(fid,0,'eof');
file_bytes = ftell(fid);
nlines = floor(sqrt(file_bytes/nbands));
nsamples = nlines;

% skip header
nbytes_header = 128;
fseek(fid,nbytes_header,'bof');

% prepend * to read data into an array that has the same class as the data
A = fread(fid,[nsamples nlines*nbands],'*uint8'); 

fclose(fid);

% put data into a 3D array
A_3dim = reshape(A,nsamples,nbands,nlines);
lan_data = permute(A_3dim,[3 1 2]);
4

1 に答える 1

1
  1. (関数を定義するのではなく)関数を呼び出すときは、キーワードを使用する必要はありませんfunction。だから、あなただけの機能を使用するために

    [lan_data] = lanread('montana.lan');

  2. 関数を宣言するときは、キーワードを使用する必要functionがありますが、引数名を指定します。したがって、ファイルの最初の行は次のlanread.mようになります。

    function [lan_data] = lanread(lan_filename, thepath)
    

    ではなく

    function [lan_data] = lanread('montana.lan','C:\formato_lan')
    

    関数を呼び出す場合にのみ、 'montana.lan''c:\formato_lan' 引数を使用します。

  3. ヘルプを得るには、関数名を正確に入力する必要があります

    doc lanread

ではなくlandread

于 2013-02-07T09:15:52.140 に答える