RunMat
GitHub

uiputfile — Open a host save-file dialog and return the selected file name and path.

uiputfile requests a save-file target from the active RunMat filesystem provider and returns MATLAB-compatible output values. Interactive hosts can implement the provider hook to show a native or browser save picker; noninteractive hosts return the standard cancellation values.

Syntax

file = uiputfile()
file = uiputfile(filter)
[file, path] = uiputfile(filter, title)
[file, path, index] = uiputfile(filter, title, defaultName)

Inputs

NameTypeRequiredDefaultDescription
filterAnyNo"*.*"File extension pattern, semicolon-delimited patterns, or an N-by-1/N-by-2 cell array of patterns and descriptions.
titleStringScalarNoDialog title.
defaultNameStringScalarNoInitial file or directory path for the dialog.

Returns

NameTypeDescription
fileAnySelected filename, or 0 when cancelled.
pathAnyDirectory containing the selected file, including a trailing separator, or 0 when cancelled.
indexNumericScalarOne-based selected filter index, or 0 when cancelled.

Returned values from uiputfile depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
RunMat:uiputfile:InvalidArgumentA filter, title, or default path has an unsupported type or shape.uiputfile: invalid argument
RunMat:uiputfile:TooManyOutputsMore than three output arguments are requested.uiputfile: too many output arguments
RunMat:uiputfile:HostErrorThe active filesystem provider fails while opening the host save-file UI.uiputfile: file selection failed
RunMat:uiputfile:InvalidSelectionThe active filesystem provider returns a malformed save-file selection.uiputfile: invalid file selection

How uiputfile works

  • file = uiputfile() uses an all-files filter.
  • uiputfile(filter) accepts a character vector, string scalar, semicolon-delimited pattern list, or an N-by-1/N-by-2 cell array of patterns and descriptions.
  • uiputfile(filter, title, defaultName) forwards the dialog title and initial file or directory path to the filesystem provider.
  • The selected path output is the containing directory with a trailing path separator. The index output is the one-based selected filter index.
  • Cancellation returns numeric zero for file, path, and index, matching MATLAB. This is also the behavior for filesystem providers that do not implement a save-file picker.

GPU memory and residency

No. Save-file dialogs are host/UI operations and always execute outside GPU residency. The provider hook returns a path in the active filesystem namespace, so browser hosts should map save targets into the mounted provider namespace before returning the path.

Examples

Choose A MAT-File Destination

[file, path] = uiputfile('*.mat', 'Save workspace');
if isequal(file, 0)
    return;
end
save(fullfile(path, file));

Use Multiple Filters

filters = {'*.mat', 'MAT-files'; '*.txt', 'Text files'};
[file, path, index] = uiputfile(filters, 'Export data', 'results.mat');

Using uiputfile with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how uiputfile changes the result.

Run a small uiputfile example, explain the result, then change one input and compare the output.

FAQ

What happens in noninteractive or headless RunMat hosts?

RunMat returns the MATLAB cancellation values (0) unless the active filesystem provider implements selectFileSave / select_file_save.

How does a browser host provide a real save picker?

Install a filesystem provider with a selectFileSave(request) function. Return null or false for cancellation, a string path for one file, or an object such as { path: '/data/results.mat', filterIndex: 1 }.

Does uiputfile write the selected file?

No. It only returns the selected file name and directory. Use fullfile(path, file) with save, fopen, writematrix, or another file-writing builtin to create the file.

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how uiputfile is executed, line by line, in Rust.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.