2016-03-31 10 views
0

MATLABで入力ダイアログボックスを作成しようとしていますが、既定の回答は以前の変換行列から呼び出す数値に基づいています。問題は、とは何か私は数字を文字列に変換できないことを意味します。つまり、数字をdefaultansというプロパティとして呼び出すことはできません。 num2strなどの基本的な変換は、データが負の可能性があるため機能しません。 charも動作していないようです。入力ダイアログのデフォルト回答として数値配列

earlierData = [ 1 -1.2 3 5 -0.2 4]; 
prompt = {'Enter x translation:', 'Enter y translation:', 'Enter z translation:', 'Enter x rotation:', 'Enter y rotation:', 'Enter z rotation:'}; 
name = 'Enter the values for the desired rotation matrix.'; 
num_lines = 1; 
defaultans = [ox, oy, oz, oxrot, oyrot, ozrot]; 
nTransform = inputdlg(prompt, name, num_lines, defaultans); 

newTranslate = [str2double(nTransform{1}) str2double(nTransform{2}) str2double(nTransform{3})]; 
nxrot = str2double(nTransform{4}); 
nyrot = str2double(nTransform{5}); 
nzrot = str2double(nTransform{6}); 

% make new transformation matrix 
rot = makehgtform('translate', newTranslate, 'xrotate', nxrot,... 
    'yrotate', nyrot, 'zrotate', nzrot); 
+0

'負の数にだけで正常に動作しnum2str'。 – Suever

答えて

1

num2strは負の数値で正常に機能します。 inputdlgのデフォルト値が平文文字列ではなくのセル配列のセル配列であることを確認する必要があります。そのように、あなただけのセル配列の内部でnum2strの出力を配置する必要があります。

default = [1.1 2.2 3.3]; 
nTransform = inputdlg('Prompt', 'Name', 1, {num2str(default)}); 

入力した値にロードするために:

numericValues = str2double(strsplit(nTransform{1})); 
newTranslate = numericValues(1:3); 
nxrot = numericValues(4); 
nyrot = numericValues(5); 
nzrot = numericValues(6); 
+2

セル配列に 'cellfun'を' str2double'と一緒に使う必要はありません。 –

関連する問題