我已经制作了一个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
答案 0 :(得分:1)
将数据整理到数组中。 例如:
T=0.3:0.1:0.6;
Price=yourfunction(T);
然后,如果你想要价格与T图,
plot(T,Price)
如果您有大量数据,请尝试避免for
循环,因为它们比矢量化代码慢。
答案 1 :(得分:1)
在M文件中的某个位置,您将每行数据打印到命令窗口,可能是使用DISP或FPRINTF。您可以使用以下内容替换该行:
data = [data; T price];
T
和price
是保存数据的变量。每当您调用上面的行(例如,在循环中)时,它会将您的数据作为新行附加到变量data
。在M文件开头的某个时刻,您必须添加以下初始化:
data = []; %# An empty array
将值附加到这样的数组有时可能效率低下,因此如果您已经提前知道要收集多少行数据,则可以使用给定大小预先分配data
。例如,如果您知道T
和price
有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