I get error when I try to plot sigmoid function

I try to plot equation with sigmoid function, but i get error
M1(1)=0;
t(1)=0;
h=0.01;
dt=-30:h:30;
t=zeros(length(dt),1);
M1=zeros(length(dt),1);
for i= 1:length(t)
t(i+1)=t(i)+dt;
M1(i+1)=M1(i)+1./(1+exp(-dt));
end
Unable to perform assignment because the left and right sides have a different number of elements.
plot(t,M1);

 Réponse acceptée

Subscript ‘dt’. However the loop is not necessary and does not appear to plot the desired function —
M1(1)=0;
t(1)=0;
h=0.01;
dt=-30:h:30;
t=zeros(length(dt),1);
M1=zeros(length(dt),1);
for i= 1:length(t)
t(i+1)=t(i)+dt(i);
M1(i+1)=M1(i)+1./(1+exp(-dt(i)));
end
plot(t,M1);
Mv = 1./(1+exp(-dt));
figure
plot(dt,Mv)
The second plot may be what you want.
.

Plus de réponses (2)

A pure sigmoidal logistic function looks like this
x = linspace(-10, 10, 20001);
S = 1./(1 + exp(-x));
figure(1)
plot(x, S), grid on
title('Sigmoidal Logistic function')
xlabel('x')
But yours looks like the ReLU-like (rectified linear unit) activation function due to the Iterative addition of M1(i). Can you clarify the type of sigmoid function that you are looking for?
M1(1) = 0;
t(1) = 0;
h = 0.01;
dt = -30:h:30;
t = zeros(length(dt), 1);
M1 = zeros(length(dt), 1);
for i= 1:length(t)
t(i+1) = t(i) + dt(i);
M1(i+1) = M1(i) + 1./(1+exp(-dt(i)));
end
figure(2)
plot(dt, M1(2:end)), grid on
title('ReLU-like function')
xlabel('dt')

3 commentaires

Thank you for your response, M1(i) is parameter something that has depending by time (i) and has a sigmoid function.
M1 (i) have the form empty array because M1(i) must repeated by time
Sam Chak
Sam Chak le 10 Mai 2023
You're welcome, @cindyawati cindyawati. Thanks for your clarification.

Connectez-vous pour commenter.

dt=-30:h:30;
dt is a vector
t(i+1)=t(i)+dt;
t(i) is a scalar. Add the complete vector dt and you will get a vector. But you cannot store a vector in the scalar location t(i+1)

4 commentaires

It is really strange to have time go backwards:
h=0.01;
dt=-30:h:30;
t = cumsum(dt);
plot(t)
I suspect you want t itself to be -30 to +30 -- that you want
t(1) = -30;
dt = h;
for i= 1:length(t)
t(i+1)=t(i)+dt;
end
plot(t)
cindyawati cindyawati
cindyawati cindyawati le 9 Mai 2023
Modifié(e) : cindyawati cindyawati le 9 Mai 2023
Thank you for your answer. Anyway, how to store t(i)+dt to vector location?
t mean for time
Like @Star Strider showed,
t(i+1)=t(i)+dt(i);

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by