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

把这一切都放在一个文件中。然后您可以通过键入在 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 回答