如何将MATLAB输出转换为数组?

时间:2010-02-23 11:05:03

标签: arrays matlab

我已经制作了一个M文件,它将数据输出到我的MATLAB命令窗口,如下所示(我删除了额外的空格)。有没有一种简单的方法可以将此输出转换为数组,而无需像我目前所做的那样将所有数据输入到数组编辑器中? (或者甚至直接从M文件运行到数组中?)

T =    0.3000
price =   24.8020

T =    0.4000
price =   28.3453

T =    0.5000
price =   31.3934

T =    0.6000
price =   34.0880

3 个答案:

答案 0 :(得分:1)

将数据整理到数组中。 例如:

T=0.3:0.1:0.6;
Price=yourfunction(T);

然后,如果你想要价格与T图,

plot(T,Price)

如果您有大量数据,请尝试避免for循环,因为它们比矢量化代码慢。

答案 1 :(得分:1)

在M文件中的某个位置,您将每行数据打印到命令窗口,可能是使用DISPFPRINTF。您可以使用以下内容替换该行:

data = [data; T price];

Tprice是保存数据的变量。每当您调用上面的行(例如,在循环中)时,它会将您的数据作为新行附加到变量data。在M文件开头的某个时刻,您必须添加以下初始化:

data = [];  %# An empty array

将值附加到这样的数组有时可能效率低下,因此如果您已经提前知道要收集多少行数据,则可以使用给定大小预先分配data。例如,如果您知道Tprice有4对值,则可以通过以下方式初始化data

data = zeros(4,2);  %# A 4-by-2 array of zeroes

然后,当您向数组添加数据时,您将执行以下操作:

data(i,:) = [T price];  %# Fill row i with data

要考虑的另一个问题是您的M文件是脚本还是功能。函数M文件顶部有一行function output = file_name(input),而脚本M文件则不行。运行脚本M文件相当于直接在MATLAB命令窗口中键入文件的全部内容,因此在工作区中可以使用M文件中创建的所有变量。

如果您正在使用函数M文件,则创建的所有变量都是函数的本地变量,并且您要在工作空间中使用的任何变量都必须作为函数的输出传递。例如,函数M文件的顶行可能如下所示:

function data = your_file

其中your_file是M文件的名称,data是返回的变量。从工作区调用此函数时,您必须在变量中捕获输出:

outputData = your_file();

现在,您将来自data的变量your_file的内容存储为工作区中的新变量outputData

答案 2 :(得分:0)

为什么要打印数据而不是在数组中收集数据?

M = [];
for ...
   M(end+1, :) = [T, price];
end;

或更具惯用性

M = 0.3:0.1:0.6; % or whatever your T values should be
M = [M' (M'.^2)] % replace the .^2 by your price function