在Matlab中运行代码的不同部分

时间:2012-11-15 09:14:59

标签: matlab

我不知道如何正确地提出这个问题。希望你能明白我的意思。我在Matlab中有一个代码,我有不同的流程。例如,如果我使用一些图像(例如,* .bmp),我必须在Matlab中运行一些代码,如果我有其他类型的图像(* .jpg)我想运行代码的另一部分。

但是,我想要做的是,在代码的开头,Matlab会询问“什么样的图像?” (例如,使用命令'disp),然后我会写'bmp'或'jpg'并运行相关代码。我不喜欢使用循环,只是“写”这个词,它可以识别过程。

我该怎么办?

3 个答案:

答案 0 :(得分: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]等等应该用实际有用的实体替换到任何地方:)

答案 1 :(得分:1)

您可能想要使用以下内容:

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

switch strResponse
...

答案 2 :(得分: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是什么类型。