How to plot the value in a graph (that i circled) with a MATLAB Function ?

1 visualizzazione (ultimi 30 giorni)

Risposte (1)

Walter Roberson
Walter Roberson il 29 Apr 2022
To do that through commands, you could have code that first copied the .slx file to a different model. Then use a bunch of set_param() commands to delete all blocks except the MATLAB function block and the solver configuration. Now create an N x 3 array at the MATLAB level in which the first column is a series of times, and the other two columns are P and V values. Now use set_param() commands to construct a From Workspace block that imports that N x 3 array from your MATLAB workspace. Then use set_param() commands to turn on signal logging on the block outputs that you will want to plot.
With all that in place, you can now use sim() to run the MATLAB function with those inputs. You would then examine the logged data in the output from sim() and use it to plot()
This kind of thing is needed to plot the outputs of the MATLAB Function Block that you have circled and do so "with a MATLAB Function". It would typically be far easier to just add signal logging in the original model, and run the entire model, and then examine the logged output.
I would point out to you that the plot that you circled points on, is the I-V plot, which is being plotted by the block labeld I-V that is two blocks vertically above the MATLAB Function Block -- and the MATLAB Function Block is not needed at all to plot I-V . The blocks needed to produce the I-V plot are the "PV Module 60 WP" and possibly items off-screen to the left of it. Turn on signal logging for the I and V outputs, run the model, examine the logged signals at the MATLAB level, do the plot,.
  2 Commenti
Dimas Lugia Hardianto
Dimas Lugia Hardianto il 29 Apr 2022
Modificato: Walter Roberson il 29 Apr 2022
i use this code in the MATLAB function
function [max_Pmpp, max_Vmp, max_Imp] = max_val(P,V)
persistent Pmpppre Vmpppre Imppre
if isempty(Pmpppre)
Pmpppre = 0;
Vmpppre = 0;
Imppre = 0;
end
if (Pmpppre > P)
max_Pmpp = Pmpppre;
max_Vmp = Vmpppre;
max_Imp = Imppre;
else
max_Pmpp = P;
max_Vmp = V;
max_Imp = P/V;
end
Pmpppre = max_Pmpp;
Vmpppre = max_Vmp;
Imppre = max_Imp;
So can you explain about how to know plot graph maximum point of x axis and y axis?
Walter Roberson
Walter Roberson il 29 Apr 2022
If you had access to all of the P, V values at the same time (because you were executing at the MATLAB level instead of inside Simulink), then the code becomes equivalent to:
[max_Pmpp, maxidx] = max(P(:));
if maxP > 0
max_Vmp = V(maxidx);
max_Imp = max_Pmpp ./ max_Vmp;
else
max_Pmpp = 0;
max_Vmp = 0;
max_Imp = 0;
end

Accedi per commentare.

Categorie

Scopri di più su View and Analyze Simulation Results in Help Center e File Exchange

Tag

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by