- Identify the switching points: We need to find the indices where vin switches to 400 or -400. This can be done by looking for the differences between consecutive elements and finding where these changes occur.
- Classify the current at these points: Based on the value of the current (DABi) at these switching points, classify according to the rules you provided.
Creating a matrix for specific variables
1 view (last 30 days)
Show older comments
t=0:0.0000001:0.0001;
DABi=zeros(1,length(t));
y=zeros(1,length(t));
vin=zeros(1,length(t));
vo=zeros(1,length(t));
L=27e-6;
f=50e3;
vo=square(2*pi*f*t);
for i=1:length(y)
j=mod(i-30,length(y))+1;
vin(i)=vo(j);
end
vin=800.*vin;
vo=400.*vo;
for i=2:length(t)
DABi(i)= ((vin(i)-vo(i))/L)*(t(i)-t(i-1))+DABi(i-1);
end
DABi=DABi-mean(DABi);
plot(t,DABi,"m");
hold on;
plot(t,vinp,"b");
hold on;
plot(t,vout,"r");
grid on;
legend('Current','Input Voltage', 'OUtput Voltage')
xlim([0 0.0001])
hold off;
I want to create 2 different matrices first based on the Input voltage and current and the second based on Output voltage and current. Let discuss only input voltage and current case.
For the first matrix I want to focus only on the point when input voltage switches (just the switching instance) to 400 and -400 value (All the rest point should be excluded from the matrix). When voltage switches to 400 value I want to look at current if it is negative I should get 1 if it is zero I should get 0 if it is positive value I should get +1. Whereas for -400 value if current is positive I should get 1 if it is zero I should get 0 if it is negative value I should get -1
0 Comments
Accepted Answer
surya venu
on 11 Jun 2024
Hi,
To create the matrix based on the Input voltage and current focusing only on the points where the input voltage switches to 400 or -400, and associating the current values accordingly, we can follow these steps:
Here is the MATLAB code
t = 0:0.0000001:0.0001;
DABi = zeros(1,length(t));
vin = zeros(1,length(t));
vo = zeros(1,length(t));
L = 27e-6;
f = 50e3;
vo = square(2*pi*f*t);
for i = 1:length(vo)
j = mod(i-30,length(vo)) + 1;
vin(i) = vo(j);
end
vin = 800.*vin;
vo = 400.*vo;
for i = 2:length(t)
DABi(i) = ((vin(i) - vo(i)) / L) * (t(i) - t(i-1)) + DABi(i-1);
end
DABi = DABi - mean(DABi);
% Finding the switching points
switchingIndices = find(diff(vin) ~= 0) + 1;
inputSwitchMatrix = zeros(length(switchingIndices), 2);
for i = 1:length(switchingIndices)
idx = switchingIndices(i);
inputVoltage = vin(idx);
currentAtSwitch = DABi(idx);
% Determine the matrix value based on your conditions
if inputVoltage == 400
% For 400V switch
if currentAtSwitch > 0
inputSwitchMatrix(i, :) = [400, 1];
elseif currentAtSwitch == 0
inputSwitchMatrix(i, :) = [400, 0];
else\
inputSwitchMatrix(i, :) = [400, -1];
end
elseif inputVoltage == -800
% For -400V switch, note your vin is actually 800 or -800
if currentAtSwitch > 0
inputSwitchMatrix(i, :) = [-800, 1];
elseif currentAtSwitch == 0
inputSwitchMatrix(i, :) = [-800, 0];
else
inputSwitchMatrix(i, :) = [-800, -1];
end
end
end
Hope it helps.
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!