我正在尝试使用我的老师给出的类代码来编写用于分段线性插值的代码 - 值得注意的是,老师似乎在for循环中遇到方程式问题 - 而且我遇到了错误“在赋值A(I)= B中,B和I中的元素数必须相同。”退出循环后。我已经查找了错误并且知道这是因为尝试将一个数组的元素拟合到另一个不同大小的数组中,但我不熟悉MATLAB中的矩阵。有人可以帮我理解我的错误来自哪里吗?
以下是代码:
EDU>> pts = [-5:1.25:5];
EDU>> x = [-5:.01:5];
EDU>> length(pts)
ans =
9
EDU>> x = x';
EDU>> size(x)
ans =
1001 1
EDU>> fpts = 1./(1+pts.^2);
EDU>> plot(fpts)
EDU>> deltax = 10/1000
deltax =
0.0100
EDU>> 1000/8
ans =
125
EDU>> newF = zeros(size(x));
EDU>> for k = 1:9
for j = 1:125
newF((k)*125+j) = (fpts(k) + ((x*k*125) + j) + (x*k*125))/(1.25*(fpts(k)- pts(k)));
end
end
??? In an assignment A(I) = B, the number of elements in B and I must be the same.
答案 0 :(得分:2)
例如k
从1开始,因此k-1
从0开始,然后您有fpts(k-1)
。这是您收到错误的地方。
编辑:在问题发生变化之前,这是问题的正确答案(至100%新问题)。
提示(进一步处理): 如果一个复杂的行给出了几个错误,而您不知道错误的来源,请尝试将其分成几行。
答案 1 :(得分:0)
在第
行newF((k)*125+j) = (fpts(k) + ((x*k*125) + j) + ...
(x*k*125))/(1.25*(fpts(k)- pts(k)));
x
是一个向量(大小为1x1001),它使右侧为向量,而左侧为向量。所以你需要索引x
,即为x
的单个元素计算newF。