Error using * Matrix dimensions must agree.

5 Ansichten (letzte 30 Tage)
Ahmad Agbaria
Ahmad Agbaria am 31 Mär. 2020
Kommentiert: Ahmad Agbaria am 31 Mär. 2020
when I run my code I get an error message but If i change fac with 5 for example everything runs as expected. Any idea of what can cause this?
fac is a scalar with holds the value of the element in row j column i divided by piv
Error using *
Incorrect dimensions for matrix
multiplication. Check that the
number of columns in the first
matrix matches the number of
rows in the second matrix. To
perform elementwise
multiplication, use '.*'.
Error in LU_CALC (line 15)
A(j,:)=A(j,:)-fac*A(i,:);
function [L_Matrix,U_Matrix] = LU_CALC(A)
%LU_CALC Summary of this function goes here
% Detailed explanation goes here
m = size(A,1);
L_Matrix = eye(m);
for i=1:m
for j=i+1:m
piv=A(i:i);
if piv==0
disp("Error!");
break;
end
fac=A(j:i)./piv;
A(j,:)=A(j,:)-fac*A(i,:);
end
end
U_Matrix = A;
end

Antworten (1)

James Tursa
James Tursa am 31 Mär. 2020
Bearbeitet: James Tursa am 31 Mär. 2020
Change this
piv=A(i:i);
to this
piv=A(i,i);
And change this
fac=A(j:i)./piv;
to this
fac=A(j,i)./piv;
  3 Kommentare
James Tursa
James Tursa am 31 Mär. 2020
Bearbeitet: James Tursa am 31 Mär. 2020
A(i,j) is the (i,j)'th element of A
A(i:j) is a subset of A using linear indexing into A based on the i:j indexing. This is completely different from A(i,j)
Let's consider a 3x2 matrix just for example. So A is 3x2.
A(1,1) is the A11 element
A(1:1) is also (concidently) the A11 element because the indexing 1:1 produces the scalar index 1
A(2,1) is the A21 element
A(2:1) is an empty matrix. The indexing 2:1 means a vector starting at 2, increasing by 1, and ending at 1. Since 2 is greater than 1, the vector 2:1 is actually empty, and when using an empty vector for indexing into A you get an empty result.
E.g., A(2,3) is the A23 element, but A(2:3) is a vector containing the 2nd and 3rd elements of A which happen to be A21 and A31, not at all what you wanted.
Ahmad Agbaria
Ahmad Agbaria am 31 Mär. 2020
Thanks!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Operators and Elementary Operations finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by