I understand the error message but I don't know what to do 🙁
Assignment has more non-singleton rhs dimensions than non-singleton subscripts
Error in Trabalho2eii (line 180) v(1,k) = abs((dx*(x2-x1)/(dt*(t2-t1))))*0.1; %[m/s]
Code:%%Bioelectricidade e Bioelectrofisiologia, MIEBB
% TRABALHO PRÁTICO, 2a parte
% Katarzyna Więciorek, fc45967; Cristina Mendes, fc48484
% Objetivo: Implementacao em Matlab as equaçoes do cabo necessárias para
% simular a propagaçao dum potencial de açao, seguindo a descriçao feito
% no Cap. 6 do Plonsey.
%%Input dado pelo usuário
clear allclose allprompt = {'Insira o valor da corrente de estímulo Is (em unidades de mA/cm):','Insira o valor do tempo total T (em unidades de ms):','Insira o valor do tempo do início da estimulaçao (em unidades de ms):','Insira o valor da duracao do estimulo (em unidades de ms):','Insira o tamanho do passo temporal (em unidades de ms):'};dlg_title = 'Estimulaçao';num_lines = 1;defaultans = {'2.0','10','2','0.1','0.001'};answer = inputdlg(prompt,dlg_title,num_lines,defaultans);Ie = str2double(answer{1}); % um corrente de estímulo Is [uA/cm^2]
T = str2double(answer{2}); % tempo total [ms]
ti = str2double(answer{3}); % inicio [ms]
td = str2double(answer{4}); % duracao [ms]
dt = str2double(answer{5}); %[ms]
% O ciclo para testar os limites das variaveis da entrada
while(1) if (Ie < 0) || ((ti+td)>T) fprintf(2,'Valores incorrectos! Por favor insira novos valores.\n'); answer = inputdlg(prompt,dlg_title,num_lines,defaultans); Ie = str2double(answer{1}); % um corrente de estímulo Is [uA/cm^2] T = str2double(answer{2}); % tempo total [ms] ti = str2double(answer{3}); % inicio [ms] td = str2double(answer{4}); % duracao [ms] dt = str2double(answer{5}); %[ms] else break; end end %%Inicializacao
% tempo
% y = linspace(x1,x2,n) generates n points. The spacing between the points is dt = (T-0)/(np-1).
np = (T/dt)+1.0; % numero de pontos
t = linspace(0,T,np); %[ms]tf = ti + td; %fim da estimulacao [ms]
% espaco
lf = 30; % comprimento da fibra [cm]
dx = 0.05; % passo espacial [cm]
nn = (lf/dx)+1.0; %número de nós
x = linspace(0,lf,nn); %[cm]
% constantes
Vr = -60.0; %[mV]
Cm = 1.0; %[uF/cm^2]
gKmax(1:nn,1:np) = 36.0; %[mS/cm^2]
gNamax(1:nn,1:np) = 120.0; %[mS/cm^2]gL(1:nn,1:np) = 0.3; %[mS/cm^2]Ri = 30; %[ohm.cm]
Re = 20; %[ohm.cm]% Potenciais de Nernst
TC = 6.3; %[Celsius]
%TC = 12.6;
%TC = 18.9;
%TC = 25.0;
[ EK, ENa, EL ] = nernst(TC); %[mV]% Potenciais [mV]
Vm(1:nn,1:np) = -60.0;dVm = zeros(nn,np);vm(1:nn,1:np) = Vm - Vr;% Alfas e betas [ms^-1]
alfan(1:nn,1:np) = an(vm);betan(1:nn,1:np) = bn(vm);alfam(1:nn,1:np) = am(vm);betam(1:nn,1:np) = bm(vm);alfah(1:nn,1:np) = ah(vm);betah(1:nn,1:np) = bh(vm);% probabilidades
n(1:nn,1:np) = 0.31768;m(1:nn,1:np) = 0.05293;h(1:nn,1:np) = 0.59612;dn = zeros(nn,np);dm = zeros(nn,np);dh = zeros(nn,np);%condutancias [mS/cm^2]
gNa(1:nn,1:np) = gNamax.*(m.^3).*h; %[mS/cm^2]gK(1:nn,1:np) = gKmax.*(n.^4);% correntes [uA/cm^2]
Ip=zeros(nn,np); % um corrente de estímulo ip [uA/cm]
INa(1:nn,1:np)= gNa.*(Vm-ENa); IK(1:nn,1:np) = gK.*(Vm-EK);IL(1:nn,1:np)= gL.*(Vm-EL);Ii = INa + IK + IL;Im = zeros(nn,np);Iain = zeros(nn,np); % corrente axial intracellular
% alinea e) ii)
v = zeros(1,20);ath = zeros(1,10);k = 1;j = 1;%%Calculos
for a = 0.0003:0.00006:0.03; %raio [cm]
cm = Cm*2*pi*a; %Capacidade axial da membrana [uF/cm]
ri = Ri/(pi*a^2); %[ohm/cm]
re = Re/(pi*(3*a^2)); %[ohm/cm]% mesh ratio
mr = dt./(ri.*cm*1e-3*(dx^2)); %<1fprintf('O mesh ratio para a= %0.3g é %0.3g\n',a,mr);
for Ie = 1.0:0.1:2.0Ip(1,ti/dt+1:((ti+td)/dt)+1)=-Ie; %primeiro no [mA/cm]
Ip(nn,ti/dt+1:((ti+td)/dt)+1)=Ie; %ultimo no
for i = 1:np-1 % tempo %corrente transmembranar (uA/cm^2)
Im(1,i) = 1000*(1/((pi*a)*(ri + re))).*(((Vm(2,i)-Vm(1,i))/(dx^2))-(re.*Ip(1,i))); Im(nn,i) = 1000*(1/((pi*a)*(ri + re))).*(((Vm(nn-1,i)-Vm(nn,i))/(dx^2))-(re.*Ip(nn,i))); Im(2:nn-1,i) = 1000*(1/((2*pi*a)*(ri + re))).*(((Vm(1:nn-2,i)-2*Vm(2:nn-1,i)+Vm(3:nn,i))/(dx^2))-(re.*Ip(2:nn-1,i))); %potencial de membrana [mV]
dVm(:,i)= (dt/Cm)*(Im(:,i)-Ii(:,i)); Vm(:,i+1) = Vm(:,i) + dVm(:,i); vm(:,i+1) = Vm(:,i) - Vr; %alfas e betas [ms^-1]
alfan(:,i) = an(vm(:,i)); betan(:,i) = bn(vm(:,i)); alfam(:,i) = am(vm(:,i)); betam(:,i) = bm(vm(:,i)); alfah(:,i) = ah(vm(:,i)); betah(:,i) = bh(vm(:,i)); %n, m, h
dn(:,i) = dt.*(alfan(:,i).*(1-n(:,i)) - betan(:,i).*n(:,i)); dm(:,i) = dt.*(alfam(:,i).*(1-m(:,i)) - betam(:,i).*m(:,i)); dh(:,i) = dt.*(alfah(:,i).*(1-h(:,i)) - betah(:,i).*h(:,i)); n(:,i+1)= n(:,i)+dn(:,i); m(:,i+1)= m(:,i)+dm(:,i); h(:,i+1)= h(:,i)+dh(:,i); %condutancias [mS/cm^2] gNa(:,i+1) = gNamax(:,i).*((m(:,i+1)).^3).*h(:,i+1); %[mS/cm^2] gK(:,i+1) = gKmax(:,i).*((n(:,i+1)).^4); % correntes [uA/cm^2] INa(:,i+1)= gNa(:,i).*(Vm(:,i)-ENa); IK(:,i+1) = gK(:,i).*(Vm(:,i)-EK); IL(:,i+1) = gL(:,i).*(Vm(:,i)-EL); Ii(:,i+1) = IK(:,i) + INa(:,i) + IL(:,i); %corrente axial intracellular, [mA/cm]
Iain(1:nn-1,i)=(-1/(ri+re)).*((Vm(2:nn,i)-Vm(1:nn-1,i))/dx-re.*Ip(1:nn-1,i)); Iain(nn,i)=(-1/(ri+re)).*(-Vm(nn,1))/dx-re.*Ip(nn,i); endif max(max(Vm))>0ath(1,j)=Ie;j=j+1;breakendend%Velocidade
t1 = 9000;t2 = 10000;x1 = find(Vm(:,t1)==max(Vm(:,t1)));x2 = find(Vm(:,t2)==max(Vm(:,t2)));%fprintf('A velocidade da propagacao é igual %0.3g (m/s)\n',v);
v(1,k) = abs((dx*(x2-x1)/(dt*(t2-t1))))*0.1; %[m/s]
k = k+1;end%%Gráficos
figure%Influência do raio da fibra na velocidade de propagação do Potencial
subplot(1,2,1)plot(a,v(1,:));title ('Velocidade de Propagação do Potencial de Acção em função do Raio da Fibra')xlabel ('Raio (cm)')ylabel ('Velocidade(m/s)')% Influência do raio da fibra no limiar de estimulacao
subplot(1,2,2)plot(a,ath(1,:));title ('Limiar de estimulacao em função do Raio da Fibra')xlabel ('Raio (cm)')ylabel ('Intensidade (uA/cm^2)')
Thank you in advance.
Best Answer