在matlab中使用for循环生成矩阵

时间:2013-10-26 17:41:13

标签: matlab

假设我有两个函数f(x),g(x)和一个向量:

xval=1:0.01:2

对于这些单独的x值中的每一个,我想要定义y值的向量,覆盖由两个函数界定的y-区间(或者可能是列是x值的矩阵,行是y值)。

我如何创建一个可以为我处理这个问题的循环?我完全不知道自己,但我相信你们中的一些人能够拥有一些东西。到现在为止,我已经为这个问题大汗淋漓了几个小时。

提前致谢。

1 个答案:

答案 0 :(得分:3)

由于您希望生成矩阵,我假设f(x)和g(x)之间的值的数量对于每个xval应该相同。我们称之为n_pt的值。然后,我们也知道结果矩阵rng的维度。

n_pt = 10;
xval = 1 : 0.01 : 2;
rng = zeros(n_pt, length(xval));

现在,进入循环。一旦我们知道f(x)和g(x)返回的y值是多少,我们就可以使用linspace给它们n_pt它们之间的等间距点。

for n = 1 : length(xval)
  y_f = f(xval(n))
  y_g = g(xval(n))
  rng(:, n) = linspace(y_f, y_g, n_pt)';
end

这很好,因为使用linspace您无需担心y_f > y_gy_f == y_gy_f < y_g。这一切都已经得到了解决。

对于demsonstration,我为xval = 1 : 0.1 : 2和两个正弦曲线f = @(x) sin(2 * x)g = @(x) sin(x) * 2运行此示例。使用plot(xval, rng, '*k');绘制点。 Example