0

この質問を正しく行うにはどうすればよいかわかりません。あなたが私が何を意味するのか理解してくれることを願っています。Matlabにコードがあり、さまざまなプロセスがあります。たとえば、ある種類の画像(たとえば、*。bmp)を使用する場合は、Matlabでコードを実行する必要があり、別の種類の画像(* .jpg)がある場合は、コードの別の部分を実行します。

しかし、私がやりたいのは、コードの最初にMatlabが「どのような画像ですか?」と尋ねることです。(たとえば、コマンド'dispを使用して)次に、'bmp'または'jpg'と記述し、関連するコードを実行します。私はループを使用せず、単語を「書く」だけで、プロセスを識別できるようにすることを好みます。

どうすればいいですか?

4

3 に答える 3

6

関数型構造化プログラミングを使用する:

function [some output args] = someFunction([some input args])

    answer = [ask question here]

    switch lower(answer)
        case 'bmp'
            [some (other) output args] = bmpfunction([some (other) input args]);
        case 'jpg'
            [some (other) output args] = jpgfunction([some (other) input args]);
        otherwise
            error('Unsupported image format.');
    end

end

function [some output args] = bmpfunction([some input args])
    ...
    [bmp operations]
    ...
end

function [some output args] = jpgfunction([some input args])
    ...
    [jpg operations]
    ...
end

これをすべて1つのファイルに入れます。次に、次のように入力して、Matlabで関数を呼び出すことができます。

someFunction([some input args])

もちろん、[some input args]どこでも実際に役立つエンティティに置き換える必要があります:)

于 2012-11-15T09:21:14.687 に答える
1

次のものを使用することをお勧めします。

prompt = "What type of image? "
strResponse = input(prompt, 's')

switch strResponse
...
于 2012-11-15T09:19:46.127 に答える
0

これを行うためのエレガントな方法は、オブジェクト指向の作業です。次に、関数のオーバーロードを使用して、switchステートメントを完全に保存できます。

このような:

classdef JpegImage    
    methods
        function myFunction(obj)
            ...
            jpegfunction
        end
    end
end

classdef BmpImage    
    methods
        function myFunction(obj)
            ...
            bmpfunction
        end
    end
end

コードでは、myFunction(x)xの種類を確認せずに使用できます。

于 2012-11-15T10:39:47.050 に答える