Subscript indices must either be real positive integers or logicals.
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Joanan Destin
le 4 Nov 2020
Commenté : Joanan Destin
le 5 Nov 2020
I was trying to use the Newton–Raphson method to do it but I keep getting this error code ''Subscript indices must either be real positive integers or logicals.''
I have attached the data provided to me and the flowchart I was following to get this program.
clc
close all
clear
% Data provided
load('SD_Test_Data_01.mat', 'voltage')
load('SD_Test_Data_01.mat', 'current')
I = current;
V = voltage;
P = I.*V; % To find the P-V curve
Pmaxcurve = max(P);
% Graphs
figure(1);
plot (V, I,'b:')
xlabel('Voltage (V)'), ylabel('Current (A)')
title('I-V Curve')
figure(2);
plot(V, P,'r--');
xlabel('Voltage(V)'), ylabel('Power (W)')
title('P-V Curve')
figure(3);
plot (V, I,'--')
title('Combine Plots')
hold on
plot(V, P, 'r:');
hold off
%At the standard test conditions (STC)
[Pmax, index_of_Pmax] = max(P);
Imp = I(index_of_Pmax); %(A)
Vmp = V(index_of_Pmax); %(v)
%We know that
Isc = max(I); %(A)
Voc = max(V); %(V)
q = 1.6022e-19; %q is the electron charge
k = 1.3806e-23; % k is the Boltzmann constant in (J/k)
% if the solar cells inside a solar module reach 65?C
T = 25; % T the module temperature in celcius
% Initializing Rs the series resistance and the shunt resistance Rsh and n
Rsh = (Vmp/(Isc- Imp))- ((Voc-Vmp)/Imp);
Rs = 0;
n= 1.2;
% Taking an assumption that Rsh>>Vo
I0 = Isc/(exp(1)*(q(Voc/(n*k*T)))-1);
Nmax = 100; %maximum number of interations
g(1) = 0.5; %first approximation
for a = zeros(1, Nmax-1)
g(a+1) = g(a) - (Isc-I0(exp(q((Vmp+Imp*Rs)/n))-1) - ((Vmp+(Imp*Rs))/n*k*T)) / (-I0((q/(nkT))*(1+diff(I, V)*Rs)*exp(1)*(q(V+(I*Rs)/(nkT)))))-(1/Rsh)*(1 + diff(I, V)*Rs);
end
plot(g, 'r.')
0 commentaires
Réponse acceptée
James Tursa
le 4 Nov 2020
Modifié(e) : James Tursa
le 4 Nov 2020
This line produces indexes of zeros:
for a = zeros(1, Nmax-1)
I think you meant this instead:
g = zeros(1, Nmax);
for a = 1:Nmax-1
Also, I would assume everywhere you have I0( you meant I0*(
Same comment for q( probably meant q*(
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Axis Labels dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!