如何在inputdlg中将字符串输入为字符串?
问题描述:
(R2016b:Matlab的版) 我想在inputdlg作为字符串的用户输入,然后将所有的输入串的阵列的单元为一个可变如何在inputdlg中将字符串输入为字符串?
我的代码是:
prompt = {'Input the number of Criterion','Input short name of criterion'};
dlg_title = 'Alternative Evauation';
num_lines = 1;
defaultans = {'3','{Criterion1,Criterion2,Criterion3}'};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);
尽管我我能读number of Criterion
作为
n=str2num(answer{1})
但是当我尝试读取short name of criteria
作为
str=answer{2}
然后而不是读取str
作为阵列 'Criterion1', 'Criterion2', 'Criterion3'
单独的细胞,它读取Criterion1Criterion2Criterion3
我想可变str
作为
str={'Criterion1', 'Criterion2', 'Criterion3'...}
上有输入number of criterion
没有限制,它可以是5或7取决于用户,所以相应name of criterion
会增加
答
事情是inputdlg
返回一个单个字符串为每个输入变量。您可以使用strsplit
这个字符串分割成几个标准名称:
prompt = {'Input the number of Criterion','Input short name of criterion'};
dlg_title = 'Alternative Evauation';
num_lines = 1;
defaultans = {'3','Criterion1,Criterion2,Criterion3'};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);
% get number of criterions
n = str2num(answer{1});
% get criterion default names (cell array of size [1 n])
defStr = cellfun(@(name,num) [name num2str(num)],...
repmat({'Criterion'},[1 n]),num2cell(1:n),'UniformOutput',0);
% get user supplied criterion names and split by commas
temp = strsplit(answer{2},',');
str = defStr;
% assign user's names instead of default ones
str(1:numel(temp)) = temp;
+0
真棒...不仅现在用户输入的作品,但你也照顾了默认名称....非常感谢你! – Sanjeev
你可以尝试使用['strsplit'(https://nl.mathworks.com/help/matlab/ref/strsplit.html)或者使用两个输入对话框:一个用于编号,另一个用于您为第一个输入对话框中提供的输入字段提供尽可能多的实际条件。 – m7913d