在 MATLAB 中尝试将值存储在向量中时重塑错误
Reshape error while trying to store values in a vector in MATLAB
我使用 LaGrange 的插值方法在 Matlab 中编写了以下插值代码,但是当尝试将值存储在向量 (L(i) = ....) 中时,我不断收到整形错误(元素不得更改).
我不知道该怎么做,如果之前有人问过这个问题,我深表歉意,但我已经尝试搜索这个,但遇到这个问题的人实际上是在尝试使用重塑功能。
我想做的就是将 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
您使用此 L(i) = 1
将 L
初始化为双精度数组,但随后您试图在其中存储符号内容。您需要将 L
初始化为符号数组,因为您要在其中存储相同的内容。所以在你的循环之前添加这一行:
L = sym('L', [3 1]);
同时避免使用 i
和 j
作为变量名,因为它们是为虚数保留的。
我在使用这段代码时遇到了与您类似的错误,并且能够通过提前初始化 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
我使用 LaGrange 的插值方法在 Matlab 中编写了以下插值代码,但是当尝试将值存储在向量 (L(i) = ....) 中时,我不断收到整形错误(元素不得更改).
我不知道该怎么做,如果之前有人问过这个问题,我深表歉意,但我已经尝试搜索这个,但遇到这个问题的人实际上是在尝试使用重塑功能。
我想做的就是将 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
您使用此 L(i) = 1
将 L
初始化为双精度数组,但随后您试图在其中存储符号内容。您需要将 L
初始化为符号数组,因为您要在其中存储相同的内容。所以在你的循环之前添加这一行:
L = sym('L', [3 1]);
同时避免使用 i
和 j
作为变量名,因为它们是为虚数保留的。
我在使用这段代码时遇到了与您类似的错误,并且能够通过提前初始化 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