2015-05-01 4 views
0

Файл data5.mat содержит значения x и соответствующие значения y. Я пытаюсь найти линию наименьших квадратов для построения вдоль графика x, y. Линия должна иметь вид y = sin (a * x) exp (b x^c). У меня есть этот скриптПочему размеры матрицы не совпадают?

clear 
load 'data5b.mat' 
a=linspace(-50,50,100); 
b=linspace(-50,50,100); 
c=linspace(-50,50,100); 
for i=1:length(a) 
    for j=1:length(b) 
     for k=1:length(c) 
       Err(i,j,k) = sum((y-sin(a(i)*x)*exp(b(j)*x.^c(k))).^2); 
     end 
    end 
end 
pcolor(Err) 

все же, когда я запускаю сценарий, я получаю:

Error using * 
Inner matrix dimensions must agree. 

Error in problem_4_hw4 (line 9) 
      Err(i,j,k) = sum((y-sin(a(i)*x)*exp(b(j)*x.^c(k))).^2); 
+0

Одно из ваших умножений не работает, потому что матрицы не имеют правильного размера. Проверьте размер каждой матрицы, которую вы умножаете, чтобы найти ошибку. – David

ответ

2

ли это

Err(i,j,k) = sum((y-sin(a(i)*x).*exp(b(j)*x.^c(k))).^2); 

грех() является вектором того же размера, х, так что это exp(), поэтому вам нужно .* между ними

+0

Я добавил его, но мои программы все еще очень медленные сейчас :( – ayshaw

+0

@ayshaw Может быть, опубликовать новый вопрос с просьбой ускорить его? – Divakar

Смежные вопросы