[QUOTE][/QUOTE]
السلام عليكم
أرجو مساعدتي في عمل المشروع
[QUOTE][/QUOTE]
السلام عليكم
أرجو مساعدتي في عمل المشروع
بعتذر لم انتبه
الحين موجود المطلوب
وشكرا
[CENTER]هذا هو الحل
والكود كالتالي
clear all;
close all;
clc;
% Requesting the number of meshes----------------------------------------
MNIsCorrect=0;
while MNIsCorrect==0
% Checking The User Input if is not Empty, is Scalar, is >=2 and it
% is an Integer
MNumber = input('Enter the number of meshes:
');
if isempty(MNumber)|| ~isscalar(MNumber) || MNumber<2||floor(MNumber)~=MNumber
disp('Meshes Number Cannot be Empty, Should be a Scalar,Should be >=2 and Should be an Integer . Try again.');
continue;
end
% If it is a Correct Input (We Stop the While Loop)
MNIsCorrect=1;
end
% Requesting the Resistances Vector (2*MNumber-1)Values------------------
RNumber=2*MNumber-1;
RNIsCorrect=0;
while RNIsCorrect==0
ResistorVector = input(['Enter ',num2str(RNumber),' resistors in ohm in the form of [R1 R2 ... R',num2str(RNumber),']:
']);
[m n]=size(ResistorVector); % ResistorVector Dimensions
% Checking The User Input
% If The Resistance Number and ResistorVector format are correct
if RNumber~=n ||m~=1
disp(['Total Number of resistances should be ',num2str(RNumber),'. Try again.']);
continue;
end
% If The Resistances Are All Positive
if any(ResistorVector < 0)
disp('The Resistances Should Not be Negative. Try again.');
continue;
end
% If All The Resistances Are zeros
if all(ResistorVector==0)
disp('The Resistances Should Not be All zeros. Try again.');
continue;
end
% If it is a Correct Input (We Stop the While Loop)
RNIsCorrect=1;
end
% Requesting the Voltage Values------------------------------------------
VVIsCorrect=0;
while VVIsCorrect==0
VVector= input('Enter voltage values in volt, [V1 V2]:
');
[x y]=size(VVector);% VoltageVector Dimensions
% Checking User Input------------------------------------------------
% If The Voltages Number and Voltage Vector format are correct
if y~=2 ||x~=1
disp('Voltage Values Should be in the form of [V1 V2]. Try again.');
end
% If it is a Correct Input (We Stop the While Loop
VVIsCorrect=1;
end
% Building The System of Equations R.I=V
% I=inv(R)*V
% R=Rd+Rb
% Creating the Diagonal Matrix Rd
Rd=diag(ResistorVector(1:2:end));
% Creating block matrics Rb1,Rb2,...,Rbn-1
BlockResistance=ResistorVector(2:2:end);
Rb=zeros(MNumber);
for i=1:length(BlockResistance)
Rb=Rb+blkdiag(zeros(i-1),[1 -1;-1 1]*BlockResistance(i),zeros(length(BlockResistance)-i));
end
% Summing the 2 Matrics Rd and Rb
R=Rd+Rb;
% Solving the System
V=[VVector(1);zeros(MNumber-2,1);-VVector(2)];
I=inv(R)*V;
% Outputing the solution
disp('The resistance matrix to solve the mesh current is:');
R
disp('The voltage vector to solve the mesh current is:');
V
disp('The mesh currents are:');
I
[/center]