如何在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会增加

+1

你可以尝试使用['strsplit'(https://nl.mathworks.com/help/matlab/ref/strsplit.html)或者使用两个输入对话框:一个用于编号,另一个用于您为第一个输入对话框中提供的输入字段提供尽可能多的实际条件。 – m7913d

事情是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