Incorrect dimensions for raising a matrix to a power

9 visualizaciones (últimos 30 días)
Lea Abi nassif
Lea Abi nassif el 20 de Mayo de 2022
Editada: Torsten el 20 de Mayo de 2022
Hello, i have this code that used to work on an older version of matlab but it's not on the new version and i can't seem to find the solution
PS : I'm using this code in another one
function G=gaussh(A,L,np)
% A amplitude de la gaussienne
% L largeur a mi-hauteur
% np nombre de points
x0=np/2+1;%2049;%257%256; %centre de la gaussienne =Lh/2
s=L/(2*sqrt(2*log(2))); % ecart type de la gaussienne
for x=1:1:np%512 %%
G(x)=A*exp(-(x-x0)^2/(2*(s^2)));
end

Respuesta aceptada

Bjorn Gustavsson
Bjorn Gustavsson el 20 de Mayo de 2022
Just set a debug-stop in that function and check what dimensions your variables have:
dbstop in gaussh
Or just at the point where you get the error:
dbstop if error
re-run the function (step-by-step in the first case with dbstep) and check the variables with the normal means (whos, size etc).
HTH

Más respuestas (1)

Voss
Voss el 20 de Mayo de 2022
Check that your inputs to gaussh are all scalars, because it looks like all three input arguments to the function gaussh are expected to be scalars, and it works if you do that:
gaussh(1,4,10)
ans = 1×10
0.0131 0.0625 0.2102 0.5000 0.8409 1.0000 0.8409 0.5000 0.2102 0.0625
But if either (or both) of the second and third inputs are not scalars, you get the error you saw:
try
gaussh(1,4,[10 10])
catch e
disp(e.message);
end
Incorrect dimensions for raising a matrix to a power. Check that the matrix is square and the power is a scalar. To operate on each element of the matrix individually, use POWER (.^) for elementwise power.
try
gaussh(1,[4 4],10)
catch e
disp(e.message);
end
Incorrect dimensions for raising a matrix to a power. Check that the matrix is square and the power is a scalar. To operate on each element of the matrix individually, use POWER (.^) for elementwise power.
try
gaussh(1,[4 4],[10 10])
catch e
disp(e.message);
end
Incorrect dimensions for raising a matrix to a power. Check that the matrix is square and the power is a scalar. To operate on each element of the matrix individually, use POWER (.^) for elementwise power.
(And if the first argument is not a scalar, you get a different error:)
try
gaussh([1 1],4,10)
catch e
disp(e.message);
end
Unable to perform assignment because the indices on the left side are not compatible with the size of the right side.
function G=gaussh(A,L,np)
% A amplitude de la gaussienne
% L largeur a mi-hauteur
% np nombre de points
x0=np/2+1;%2049;%257%256; %centre de la gaussienne =Lh/2
s=L/(2*sqrt(2*log(2))); % ecart type de la gaussienne
for x=1:1:np%512 %%
G(x)=A*exp(-(x-x0)^2/(2*(s^2)));
end
end

Categorías

Más información sobre Debugging and Analysis en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by