尝试在MATLAB中的向量中存储值时重塑错误

时间:2017-06-10 23:17:44

标签: matlab vector reshape

我使用LaGrange的插值方法在Matlab中编写了以下插值代码,但是当试图将值存储在向量中时(L(i)= ....),我不断得到重塑错误(元素必须没变)。

我不知道该怎么做,如果之前已经提出过这个问题,我很抱歉,但我已经尝试过搜索这个问题了,但是遇到这个问题的人实际上是在尝试使用reshape函数。

我想要做的就是将J循环的结果存储在一个向量中。

syms X
x = [-1, 0, 2]
y = [4, 1, -1]

i = 1
j = 1
P = 0

while i < 4
  L(i) = 1
  while j < 4
    if (i ~= j)
      L(i) = L(i) * (X - x(j)) / (x(i) - x(j))
    end
    j = j + 1
  end
  P = P + y(i) * L(i)
  i = i + 1
end

2 个答案:

答案 0 :(得分:1)

您使用此LL(i) = 1初始化为双数组,但之后您尝试将符号内容存储在其中。您需要将L初始化为符号数组,因为您要在其中存储相同的内容。所以在循环之前添加这一行:

L = sym('L', [3 1]);

同时避免使用ij作为变量名,因为这些是为虚数保留的。

答案 1 :(得分:0)

我使用此代码得到了与您类似的错误,并且能够修复它,提前初始化L.这是您原始代码的修改(clear all只是为了确保没有任何有趣的事情发生)。

clear all;
syms X L;
L(1:3) = [1 1 1];
x = [-1, 0, 2]
y = [4, 1, -1]

i = 1
j = 1
P = 0

while i < 4
  while j < 4
    if (i ~= j)
      L(i) = L(i) * (X - x(j)) / (x(i) - x(j))
    end
    j = j + 1
  end
  P = P + y(i) * L(i)
  i = i + 1
end