我不知道如何正确地提出这个问题。希望你能明白我的意思。我在Matlab中有一个代码,我有不同的流程。例如,如果我使用一些图像(例如,* .bmp),我必须在Matlab中运行一些代码,如果我有其他类型的图像(* .jpg)我想运行代码的另一部分。
但是,我想要做的是,在代码的开头,Matlab会询问“什么样的图像?” (例如,使用命令'disp),然后我会写'bmp'或'jpg'并运行相关代码。我不喜欢使用循环,只是“写”这个词,它可以识别过程。
我该怎么办?
答案 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是什么类型。