Inputdlg requesting input to provide an output of 6 integers as a row vector

2 ビュー (過去 30 日間)
David Low
David Low 2018 年 2 月 19 日
編集済み: Stephen23 2018 年 2 月 19 日
I want to create a row of integers starting by asking an input from a user using the inputdlg function. I just need to make sure the output is a row vector with 6 integers.

採用された回答

Stephen23
Stephen23 2018 年 2 月 19 日
編集済み: Stephen23 2018 年 2 月 19 日
Do NOT use str2num! Using sscanf is faster than str2num (and avoids the internal eval call that str2num hides inside):
>> c = inputdlg('Enter six space-separated integers:')
>> v = sscanf(c{1},'%d',[1,Inf])
v =
1 2 3 4 5 6
To ensure that there are six integers either add an assert:
assert(numel(v)==6,'Input exactly six integers.')
or a while loop:
v = [];
while numel(v)~=6
c = inputdlg('Enter six space-separated integers:');
v = sscanf(c{1},'%d',[1,Inf])
end

その他の回答 (1 件)

ES
ES 2018 年 2 月 19 日
inputdata = [];
while(~isequal(size(inputdata), [1,6]))
x = inputdlg('Enter 6 integers as space-separated numbers:',...
'Sample', [1 50]);
inputdata = str2num(x{:});
end

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by