将数据从工作区传递到函数

发布于 2024-08-30 16:41:45 字数 396 浏览 4 评论 0原文

我创建了一个 GUI 并使用 uiimport 将数据集导入到 matlab 工作区中,我想将此导入的数据传递到 matlab 中的另一个函数...如何将此导入的数据集传递到另一个函数中...我尝试做 diz. ..但它无法选择 diz....它没有选择 matlab 工作区上的数据....有什么想法吗?

[file_input, pathname] = uigetfile( ...
{'*.txt', 'Text (*.txt)'; ...
'*.xls', 'Excel (*.xls)'; ...
'*.*', 'All Files (*.*)'}, ...
'Select files');

uiimport(file_input);
M = dlmread(file_input);
X = freed(M);

I created a GUI and used uiimport to import a dataset into matlab workspace, I would like to pass this imported data to another function in matlab...How do I pass this imported dataset into another function....I tried doing diz...but it couldnt pick diz....it doesnt pick the data on the matlab workspace....any ideas??

[file_input, pathname] = uigetfile( ...
{'*.txt', 'Text (*.txt)'; ...
'*.xls', 'Excel (*.xls)'; ...
'*.*', 'All Files (*.*)'}, ...
'Select files');

uiimport(file_input);
M = dlmread(file_input);
X = freed(M);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

慕巷 2024-09-06 16:41:45

我认为你需要将这个语句的结果:

uiimport(file_input);

赋给一个变量,就像这样

dataset = uiimport(file_input);

,然后将其传递给你的下一个函数:

M = dlmread(dataset);

这是Matlab的一个非常基本的功能,这对我来说意味着你会发现阅读一些内容很有价值Matlab 的在线帮助和一些文档。当您完成此操作后,您可能会找到更简洁、更快捷的方法来执行此操作。

编辑:好吧,@Tim,如果 RTFM 一切都失败了。所以我这样做了,我之前的答案是错误的。您需要传递给 dlmread 的是要读取的文件的名称。因此,您可以使用 uiimportdlmread 来读取文件,但不能同时使用两者。您使用哪一种取决于您想要执行的操作以及输入文件的格式。所以,去 RTFM,我也会这样做。如果您仍然遇到问题,请更新您的问题并提供文件内容的详细信息。

I think that you need to assign the result of this statement:

uiimport(file_input);

to a variable, like this

dataset = uiimport(file_input);

and then pass that to your next function:

M = dlmread(dataset);

This is a very basic feature of Matlab, which suggests to me that you would find it valuable to read some of the on-line help and some of the documentation for Matlab. When you've done that you'll probably find neater and quicker ways of doing this.

EDIT: Well, @Tim, if all else fails RTFM. So I did, and my previous answer is incorrect. What you need to pass to dlmread is the name of the file to read. So, you either use uiimport or dlmread to read the file, but not both. Which one you use depends on what you are trying to do and on the format of the input file. So, go RTFM and I'll do the same. If you are still having trouble, update your question and provide details of the contents of the file.

阪姬 2024-09-06 16:41:45

在您的脚本中,您可以通过三种方式读取文件。根据您的文件格式选择其中之一。但首先我会将文件名与路径结合起来:

file_input = fullfile(pathname,file_input);

我不会在脚本中使用 UIIMPORT,因为用户可以更改读取数据的方式,并且变量名称取决于文件名和用户。

使用 DLMREAD,您只能从文件。 跳过一定数量的行或列

M = dlmread(file_input,'\t',1,1);

您还可以通过跳过左侧的第一行和一列来 。
或者您可以以 Excel 样式定义范围。有关更多详细信息,请参阅 DLMREAD 文档。

传递给 DLMREAD 的文件名必须是字符串。不要传递文件句柄或任何数据。如果不是字符串,您将得到“文件名必须是字符串”。简单的。

FREAD 从二进制文件读取数据。如果您确实需要这样做,请参阅文档。

还有许多其他函数可以从文件中读取数据。如果您仍然遇到问题,请向我们展示您的文件格式的示例,以便我们建议最佳的阅读方式。

In your script you have three ways to read the file. Choose one on them depending on your file format. But first I would combine file name with the path:

file_input = fullfile(pathname,file_input);

I wouldn't use UIIMPORT in a script, since user can change way to read the data, and variable name depends on file name and user.

With DLMREAD you can only read numerical data from the file. You can also skip some number of rows or columns with

M = dlmread(file_input,'\t',1,1);

skipping the first row and one column on the left.
Or you can define a range in kind of Excel style. See the DLMREAD documentation for more details.

The filename you pass to DLMREAD must be a string. Don't pass a file handle or any data. You will get "Filename must be a string", if it's not a string. Easy.

FREAD reads data from a binary file. See the documentation if you really have to do it.

There are many other functions to read the data from file. If you still have problems, show us an example of your file format, so we can suggest the best way to read it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文