2017-12-08 13 views
0

コードの一部しか残念ですが、不必要に複雑です。
複数の質問ダイアログボックスをケースに埋め込んでみたいです。 switch secimである最初のスイッチケースは、最後のオプションを2回入れたときにうまく動作します。これは、'Uc','Uc'です。それ以外のオプションだけが表示されている場合を除きます。しかし、switch secim2のインナースイッチのケースで同じことをすると、secim2 = questdlg('İslem?', ...というエラーが表示され、2番目の'Birim vektor'が削除されてもうまく動作しますが、Birim vektorオプションが表示されません。これをどうやって解決するのですか?matlabでquestdlgに問題があります

secim = questdlg('Vektorler kac boyutlu?', ... 
'Vektor', ... 
'Bir','İki','Uc','Uc'); 
switch secim 
case 'Bir' 
    secim2 = questdlg('İslem?', ... 
    'Vektor', ..., 
    'Toplam','Fark','Skaler Carpim','Birim vektor'); 
switch secim2 
... 
+1

を[ 'questdlg'(https://www.mathworks.com/help/matlab/ref/questdlg.html)のみ3ボタンまで受け付けオプション。あなたの最初のケースは4です。 – excaza

+0

私は使用できる代替品がありますか?私は4つのオプションが必要です。 –

+1

GitHubの['nbuttondlg'](https://github.com/StackOverflowMATLABchat/nbuttondlg)を参照してください。免責事項:私はそれを書いた。 – excaza

答えて

1

あなたがdocumentationが表示された場合、あなたは'Uc'を繰り返しているときにsecimで使用している構文は次のとおりです。

button = questdlg(qstring,title,str1,str2,str3,default) 

文書で述べたように、defaultstr1の1、str2でなければなりませんstr3となりますので、'Uc'を繰り返すと、デフォルト値として'Uc'となり、問題はありません。

secim2では、'Birim vektor'は、3つの文字列のいずれとも一致しないので、あなたは、この警告を取得したい:

警告:デフォルトの文字ベクトルは、いずれかのボタン 文字ベクトル名と一致していません。

'Birim vektor'を繰り返すと、valid syntaxesと一致しません。

上記のコメントもコメントで指摘されています。


以上の3つの文字列の場合は、listdlgを使用しています。

与える
choices = {'Toplam' ,'Fark','Skaler Carpim','Birim vektor'}; 
SelInd = listdlg('Name','Vektor', 'PromptString','İslem?','ListString',choices,... 
    'CancelString', 'Default Choice', 'SelectionMode','single',... 
    'ListSize',[200 100]) %adjust listsize as per requirement 
SelInd(end+1) = 4; %Default Choice (Biriam vektor) 
secim2 = choices{SelInd(1)}; 

output

+0

ありがとう –