【问题标题】:Pass data from workspace to a function将数据从工作区传递到函数
【发布时间】:2010-04-27 00:37:44
【问题描述】:

我创建了一个 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);

【问题讨论】:

    标签: user-interface matlab workspace


    【解决方案1】:

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

    uiimport(file_input);
    

    到一个变量,像这样

    dataset = uiimport(file_input);
    

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

    M = dlmread(dataset);
    

    这是 Matlab 的一个非常基本的功能,它向我表明,阅读一些 Matlab 的在线帮助和一些文档会很有价值。完成后,您可能会找到更简洁、更快捷的方法。

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

    【讨论】:

    • Matlab 文档写得非常好,应该确实有助于使事情变得清晰。如果你不想看,也可以观看众多视频教程之一,比如这个:mathworks.com/support/2010a/matlab/7.10/demos/…
    • ???在 55 处使用 ==> dlmread 时出错文件名必须是字符串。 Datz 我在尝试使用 dlmread 时得到了什么
    【解决方案2】:

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

    file_input = fullfile(pathname,file_input);
    

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 2011-02-15
      • 2015-10-21
      • 1970-01-01
      相关资源
      最近更新 更多