我想让用户选择一个文件(我知道我目前已经设置为选择一个文件夹)或手动输入数字。
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
我想允许用户输入单词file
, folder
, f
或choose
,并在if
语句的第一部分使用文件夹对话框,如果这四个字符串中的任何一个没有输入,请转到else
语句。
因为我将它们保存为字符串,所以我使用strcmp
。如果我运行代码并输入单词"folder",我将得到如下矩阵:
0 1
0 0
我的问题是我如何使用strcmp
说"如果矩阵的任何元素是1",逻辑输出现在是1而不是0。
谢谢你的帮助!
直接替换
if tf >= 1
if any(tf(:))
tf(:)
返回tf
中所有元素的列向量,any()
检查是否有大于1的值
除了Ian Riley所建议的之外,人们还可以使用以下依赖于正数的"真实性"的替代方法:
nnz
:
if nnz(tf)
sum
:
if nnz(tf(:))
两个方法都对数组中的非零元素计数