please help me to convert c code into matlab code for partial shading of solar panel using equilibration algorithm

2 views (last 30 days)
hei please convert this c code into matlab code
#include<stdio.h>
void main(){
float p1,p2,p3;
float delta=1;
scanf("%f%f%f",&p1,&p2,&p3);
float d = p2;
if(p1 != p2)
{
if(p1>p2)
{
if(p2>p3)
{
d=d-delta;
delta=delta*2;
}
else if(p2=p3)
{
d=d-delta;
delta=delta*2;
}
else
{
delta=delta/2;
}
}
else
{
if(p3>p2)
{
d=d+delta;
delta=delta*2;
}
else if(p2=p3)
{
d=d+delta;
delta=delta*2;
}
else
{
delta=delta/2;
}
}
}
else if(p1==p2)
{
if(p2>p3)
{
if(p2>p3)
{
d=d-delta;
delta=delta/2;
}
else if(p2<p3)
{
d=d-delta;
delta=delta*2;
}
else
{
delta=delta*2;
}
}
}
}

Accepted Answer

Image Analyst
Image Analyst on 7 Jun 2021
You can do it.
  1. Replace } (closing braces) with end.
  2. Get rid of { (opening braces).
  3. Replace != with ~=.
  4. Get rid of float.
  5. Replace "else if" with "elseif" (no space)
Not sure what's going on here:
scanf("%f%f%f",&p1,&p2,&p3);
Come on, it's not beyond your capabilities. Give it a try. This is how you learn.

More Answers (1)

James Tursa
James Tursa on 7 Jun 2021
Edited: James Tursa on 7 Jun 2021
In addition to what @Image Analyst has written, I would advise turning this into a function with p1, p2, p3 as input arguments and d, delta as output arguments.
Also, the C code appears to have bugs. These lines:
else if(p2=p3)
should from context probably be this instead:
else if(p2==p3)
The p2=p3 expression is an assignment in C that is then tested for non-zero, not an equality test, so this expression will be true whenever p3 is non-zero. You should double check your algorithm to confirm this is a bug. The MATLAB code for an equality test should use the == operator also.

Categories

Find more on MATLAB in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!