如何遍历函数的单元格数组,将每个函数绘制在不同的图形上

时间:2013-10-07 08:36:04

标签: matlab

这是我尝试的2个函数,我想并排绘制:

numgraphs = 2;
x = 1:5;
y1 = x.^2;
y2 = x.^3;

funcs = cell(y1, y2);

for i=1:numgraphs
    subplot(1,2,i);
    plot(x,funcs(i));
end

但我收到了这个错误:

Error using plot
Conversion to double from cell is not possible.

我正在尝试做什么?

2 个答案:

答案 0 :(得分:4)

使用()括号进行单元格索引会返回一个单元格数组,而不是此单元格中包含的函数:

>> x = {1};
>> class(x(1))
ans =
cell

>> class(x{1})
ans =
double

您希望{}建立索引:

plot(x,funcs{i});

请参阅 http://www.mathworks.de/de/help/matlab/matlab_prog/access-data-in-a-cell-array.html 有关这方面的更多信息。

答案 1 :(得分:4)

您的代码中存在两个问题:

  • 创建单元格:您应该使用funcs = {y1, y2};,而不是funcs = cell(y1, y2);
  • 绘图:您应该使用plot(x,funcs{i});,而不是plot(x,funcs(i));。花括号用于访问单元格的内容