【问题标题】:Test for either of multiple string inside if statement conditions测试 if 语句条件中的多个字符串之一
【发布时间】:2016-10-13 21:02:48
【问题描述】:

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

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。如果我运行代码并输入单词“文件夹”,我将得到一个矩阵,如下所示:

 0     1
 0     0

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

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    只需替换

    if tf >= 1
    

    if any(tf(:))
    

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

    【讨论】:

    • 啊,太棒了!感谢您的帮助!
    • >= 1 也是不必要的,因为any 只会返回01
    • @KyleMoffett - 请考虑accepting this answer,如果它对您的问题有帮助。
    【解决方案2】:

    除了Ian Riley 的建议外,还可以使用以下依赖于正数“真实性”的替代方案:

    nnz:

    if nnz(tf)
    

    sum:

    if nnz(tf(:))
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多