2013-08-06 5 views
1

Я хочу показать мой выход в MsgBox, так что я использовал msgbox(num2str(output)), но я хочу, чтобы назвать каждую строку, например:MsgBox в MATLAB

Red 25 
Green 52 
Yellow 88 

, но когда я пытаюсь сделать что он говорит

Error using horzcat 
    CAT arguments dimensions are not consistent. 

и когда всплывает окно и пользователь нажимает кнопку OK, то другой появится окно с запросом

W = questdlg('Would you like to retrain or test the network?', ... 
     'Artificial Neural Network', 'Retrain', 'Test', 'Exit', 'Exit'); 

Итак, как можно отформатировать msgb ox, и как только будет нажата кнопка OK, появится другое окно?

Любая помощь будет оценена!

Спасибо!

+0

что именно это выход выглядит? просто некоторые числа или что-то вроде массива ячеек? –

+0

это матрица с 8 строками и 1 столбец .. и я хочу, чтобы каждая строка имела другое имя .. это возможно или? – Chrysovalando

ответ

2

Для вашего первого вопроса, то вы можете использовать cell array обозначения для форматирования текста окна сообщения:

rVal = 25; 
gVal = 35; 
bVal = 45; 
msg = {['Red ',num2str(rVal)];... 
     ['Green ',num2str(gVal)];... 
     ['Blue ',num2str(bVal)]}; 

Это позволяет вам вертикально конкатенировать многолучевые gth строк.

Если выход является вектор-столбец Nx1, вы всегда можете отформатировать его таким образом с помощью cellfun:

output = [25;35;45]; 
msgTxt = {['Red '];['Green '];['Blue ']}; 
msgNum = cellfun(@num2str,num2cell(output),'UniformOutput',false); 
msg = cellfun(@(x,y) [x,y],msgTxt,msgNum,'UniformOutput',false); 

Пока вы подходите размер msgTxt с выходной размер, это должно работать нормально для любого размер выходной переменной.

Как для создания вашей программы ждать ответа пользователя, попробуйте uiwait:

mH = msgbox(msg); 
uiwait(mH) 
disp('Let''s continue...') 
+0

@Chrysovalando, это отвечает на ваш вопрос? – Doresoom

+0

да! Спасибо! :) Можете ли вы объяснить мне немного больше, что такое '' UniformOutput'' и бит 'false'? или они из определения cellfun? – Chrysovalando

+1

Они сообщают cellfun, что он должен выводить результаты в массив ячеек, потому что они не будут иметь одинаковый размер/тип. Если cellfun имеет единый логический или числовой вывод, это необязательно. – Doresoom

0

MsgBox может быть отформатирован как этот

R=23;G=35;B=45; %given values 

    (msgbox({['Red ',num2str(R)];['Green ',num2str(G)];['Blue ',num2str(B)]; })); 

После вашей последней части вопроса

uiwait(msgbox({['Red ',num2str(R)];['Green ',num2str(G)];['Blue ',num2str(B)]; })); 

W = questdlg('Would you like to retrain or test the network?', ... 
     'Artificial Neural Network', 'Retrain', 'Test', 'Exit', 'Exit'); 
+0

спасибо, но каждый раз, когда результат отличается. Поэтому вместо 25 это будет 6 .. есть ли способ, которым я могу назвать каждую строку, а затем MATLAB автоматически выравнивает первую строку с первой строкой и так далее? – Chrysovalando

+0

@Chrysovalando – Zero

+0

@ Doresoom и John, как я сказал Lucius, мой результат - это матрица из 8 строк и 1 столбец, и я хочу назвать каждую строку .. это возможно? – Chrysovalando