MATLAB: ошибка: при A (I) = B количество элементов в B и I должно быть одинаковым - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь написать код для кусочно-линейной интерполяции, используя код, который мой учитель дал классу - стоит отметить, что у учителя, похоже, возникли проблемы с уравнением внутри циклов 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.

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Например, k начинается с 1, поэтому k-1 начинается с 0, и тогда у вас есть fpts(k-1). Здесь вы получите ошибку.

Изменить: Это был правильный ответ на вопрос, пока вопрос не изменился (на 100% новый вопрос).

Подсказка (для дальнейшего рассмотрения): Если одна сложная строка дает вам несколько ошибок, и вы не знаете, откуда возникла ошибка, попробуйте разбить ее на несколько строк.

0 голосов
/ 10 марта 2012

В строке

newF((k)*125+j) = (fpts(k) + ((x*k*125) + j) + ...
                  (x*k*125))/(1.25*(fpts(k)- pts(k)));

x - это вектор (размер 1x1001), который превращает правую сторону в вектор, а левую - в линию.Таким образом, вам также нужно индексировать x, то есть вычислять newF для одного элемента x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...