将数据从工作空间传递给函数

时间:2010-04-25 09:49:24

标签: user-interface matlab workspace

我创建了一个GUI并使用uimport将数据集导入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);

2 个答案:

答案 0 :(得分:1)

我认为您需要分配此声明的结果:

uiimport(file_input);

变量,如此

dataset = uiimport(file_input);

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

M = dlmread(dataset);

这是Matlab的一个非常基本的功能,它向我建议你会发现阅读一些在线帮助和Matlab的一些文档很有价值。当你这样做时,你可能会找到更简洁,更快捷的方法。

编辑:嗯,@ Tim,如果所有其他方法都无法通过RTFM。所以我做了,我之前的回答是不正确的。您需要传递给dlmread的是要读取的文件的名称。因此,您可以使用uiimportdlmread来读取文件,但不能同时使用两者。您使用哪一个取决于您要执行的操作以及输入文件的格式。所以,去RTFM,我也会这样做。如果您仍然遇到问题,请更新您的问题并提供该文件内容的详细信息。

答案 1 :(得分:0)

在您的脚本中,您有三种方法来读取文件。根据您的文件格式选择一个。但首先我要将文件名与路径组合:

file_input = fullfile(pathname,file_input);

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

使用DLMREAD,您只能从文件中读取数值数据。您还可以使用

跳过一些行或列
M = dlmread(file_input,'\t',1,1);

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

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

FREAD从二进制文件中读取数据。如果你真的必须这样做,请参阅文档。

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