index out of bounds
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
%clc
clear
%parameters
dt = 1e-6;
B1 = 10;
phi = 0;
gamma = 267.513*10^6; %rad/(s*T)
Bzi = -5; %in HZ
Bzj = 5; %in HZ
a = 1000000;
G = 42.576; % Gyromagnetic ratio (MHz/T) MHZ=1*10^6
B_zi = Bzi/(a*G); %in tesla
B_zj = Bzj/(a*G); %in tesla
% mag_initial = [0 0 1; 0 0 1];
%functions
% equation magnetizaion = [m_x1 m_y1 m_z1; m_x2 m_y2 m_z2];
mag = zeros(2,3);
B = zeros(size(mag));
% line up
mag(:,3) = 1;
B(1,3) = B_zi;
B(2,3) = B_zj;
%time evolution
for nn = (1:10000)
% calculate B
M = mean(mag); %average of mag
m_x = M(1);
m_y = M(2);
euler = complex(cos(phi),sin(phi));
m = complex(m_x,m_y);
B0 = euler*m;
B_x = real(B0);
B_y = imag(B0);
B = [B_x B_y B_zi; B_x B_y B_zj]; % equation B = [B_x+B1 B_y B_zi; B_x+B1 B_y B_zj];
[tt, mm] = ode45('bloch',[0:dt/2:dt],mag,[],gamma,B);
mag = mm(:,3);
end
my function is
function dmdt = bloch(tspan,mag,spot,gamma,B) %outputs and inputs
mag = reshape(mag,2,3);
dmdt = gamma*cross(mag,B);
dmdt = dmdt(:);
return
the error I got
Attempted to access M(2); index out of bounds because numel(M)=1.
Error in main5 (line 32) m_y = M(2);
Error in run (line 57) evalin('caller', [s ';']);
0 comentarios
Respuestas (1)
Image Analyst
el 12 de Jul. de 2013
Looks like it should work. In fact it does for me. So I think your mean is not what you think it is. After you call mean(), put these lines:
which -all mean
whos M
What do you see?
1 comentario
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!