测试if语句条件中的多个字符串之一

时间:2016-10-13 21:02:49

标签: matlab if-statement user-input prompt strcmp

我想让用户选择一个文件(我知道我目前已将其设置为选择文件夹)或手动输入数字。

prompt = input('Do you want to manually input values or select file? :','s'); 

s2 = {'file','folder'; 'f','choose'};

tf = strcmp(prompt,s2);

if tf >= 1

folder_name = uigetdir
folder_name = uigetdir(start_path)
folder_name = uigetdir(start_path,dialog_title)

else        
    prompt = {'Enter matrix size:','Enter colormap name:'};
    dlg_title = 'Input';
    num_lines = 1;
    defaultans = {'20','hsv'};
    answer = inputdlg(prompt,dlg_title,num_lines,defaultans); 
end

我想允许用户输入单词filefolderfchoose,并使用第一部分中的文件夹对话框if语句,如果未输入这四个字符串中的任何一个,请转到else语句。

因为我将它们保存为字符串我正在使用strcmp。如果我运行代码并输入单词'folder',我将得到一个矩阵,如:

 0     1
 0     0

我的问题是我如何使用strcmp说“如果矩阵的任何元素是1”,逻辑输出现在为1而不是0。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

只需替换

if tf >= 1

if any(tf(:))

tf(:)返回tf中所有元素的列向量,any()检查是否有大于1的值。

答案 1 :(得分:0)

除了Ian Riley建议的内容之外,还可以使用以下备选方案,这些方案依赖于"真实性"正数:

nnz

if nnz(tf)

sum

if nnz(tf(:))

两种方法都会计算数组中的非零元素。