Увеличение выходного формата числовых значений Matlab в EditField

Я использую AppDesigner и Matlab R2017B.

Мне было интересно, как бы я изменил числовой формат в Matlab. Чтобы сделать себя более понятным: у меня есть 3 EditFileds, пользователь вводит число в два из полей и нажимает кнопку вычисления, которая добавляет 2 значения и выводит ответ в третье поле EditField. Это работает все отлично. Однако, если выходное число больше, чем 9999, я получаю ужасную форму экспоненты, такую ​​как 1.0e+04, как я могу сказать, что matlab производит больше значений места? Например: вместо 1.0e+4 я получаю 10000

2 ответа

Вы можете изменить отображение вручную или программно

Вручную: выберите EditField, перейдите в "Design View" и измените его свойство "DISPLAY".

Programatically:

fig = uifigure;
edt = uieditfield(fig,'numeric','ValueDisplayFormat','%.2f');

где %.2f является оператором формата, который задает 2 десятичных знака

Также см. Числовые свойства uieditfield

Если вы хотите иметь абсолютный контроль над форматом отображения для "третьего EditField", то вы можете рассмотреть возможность изменения типа с NumericEditField в EditFieldто есть строковая версия. Затем вы можете отформатировать число в виде строки и отобразить, как вы хотите, например, с единицами измерения или разделителями-запятыми.

Используя ваш пример:

"Вместо 1.0e+4 я хочу 10000".

Наличие приложения в appdesigner со следующими графическими объектами:

% Properties that correspond to app components
properties (Access = public)
    UIFigure              matlab.ui.Figure
    LabelNumber1          matlab.ui.control.Label
    Number1               matlab.ui.control.NumericEditField
    LabelNumber2          matlab.ui.control.Label
    Number2               matlab.ui.control.NumericEditField
    ResultEditFieldLabel  matlab.ui.control.Label
    Result                matlab.ui.control.EditField
    Calculate             matlab.ui.control.Button
end

Обратите внимание на Result Объект является стандартной строкой на основе EditFIeldВаша функция обратного вызова кнопки может быть:

% Button pushed function: Calculate
function doCalculation(app, event)
    value_1 = app.Number1.Value;
    value_2 = app.Number2.Value;
    % Calculation
    result = value_1 + value_2;
    resultFormatted = num2str(result);
    app.Result.Value = resultFormatted;
end

Но чтобы получить форматирование, как вы просите, т.е. 10000, вам нужно отформатировать resultFormatted Строка соответственно. Теперь, имея в результате строку EditField в виде строки, все внесенные вами изменения форматирования будут сохранены, например, разделитель запятых. Это также позволяет гибко избегать отображения десятичных дробей, когда их нет (10000 => '%.2f' => '10000.00') или нежелательное округление (56.576 => '%.2f' => '56.58').

Получение запятой-разделителя при форматировании не является явной частью вашего вопроса, но есть много способов сделать это. Я рад поделиться своим решением, если кто-то захочет его.

С уважением.

Другие вопросы по тегам