How I can extend this function

5 vues (au cours des 30 derniers jours)
Marius Dranca
Marius Dranca le 5 Avr 2013
I made this funcion to get any value of L between theta=-22.5:22.5 deg and I=0:6 .
%Inductance versus teta and current
function [L] = Induc(teta,current)
L0 = [0.076 0.077 0.079 0.098 0.128 0.137 0.128 0.098 0.079 0.077 0.076];
L1 = [0.076 0.077 0.079 0.098 0.128 0.137 0.128 0.098 0.079 0.077 0.076];
L2 = [0.076 0.077 0.079 0.098 0.122 0.134 0.122 0.098 0.079 0.077 0.076];
L3 = [0.068 0.069 0.071 0.086 0.103 0.108 0.103 0.086 0.071 0.069 0.068];
L4 = [0.060 0.061 0.063 0.075 0.086 0.090 0.086 0.075 0.063 0.061 0.060];
L5 = [0.054 0.055 0.057 0.065 0.074 0.078 0.074 0.065 0.057 0.055 0.054];
L6 = [0.050 0.051 0.052 0.059 0.065 0.069 0.065 0.059 0.052 0.051 0.050];
T = [-22.5 -18 -13.5 -9 -4.5 0 4.5 9 13.5 18 22.5];
I = 1:1:6;
Lx = [L0;L1;L2;L3;L4;L5;L6];
L = interp2(T,I,Lx ,teta,current,'cubic');
end
How I can extend it to obtain more values of L, for exemple between -360 and 360 deg. and for I between -6 and 0. I mention that the values of L are the same for theta in the interval [22.5;67.5],for [67.5;112.5] and so on.(they are corelate, for ex for theta=0, L will be the same in theta=45; the same for theta=1 and theta=46 ) Thanks!
  1 commentaire
Jan
Jan le 5 Avr 2013
There is no "theta" in your code, so how can we know, what you want to achieve? Please formulate the question again with more details.

Connectez-vous pour commenter.

Réponses (1)

Ahmed A. Selman
Ahmed A. Selman le 5 Avr 2013
The function you wrote above has an error at
I = 1:1:6;
it should be
I = 0:1:6;
% or simply
I = 0:6;
Since you are interested with interpolation, I'm not sure how to explain (obtain more values of L), does it mean extend the range of L (with fixed number of points) or extend the number of points of L (fixed range of L), or both. However, here are few things to try:
1) Try the following method to extend number of points, and the output range:
% The same function but have its output over input range Theta and I
for Theta=-360:360
i=Theta+361;
for I=-6:0
j=I+7;
L(i,j)=Induc(Theta,I);
end
end
but it will give you NaN output (inconsistent with L0,L1,L2..etc).
2) Try re-writing your Induc.m function as Induc2.m function, as in:
function [L] = Induc2(theta,current,I,T)
L0 = [0.076 0.077 0.079 0.098 0.128 0.137 0.128 0.098 0.079 0.077 0.076];
L1 = [0.076 0.077 0.079 0.098 0.128 0.137 0.128 0.098 0.079 0.077 0.076];
L2 = [0.076 0.077 0.079 0.098 0.122 0.134 0.122 0.098 0.079 0.077 0.076];
L3 = [0.068 0.069 0.071 0.086 0.103 0.108 0.103 0.086 0.071 0.069 0.068];
L4 = [0.060 0.061 0.063 0.075 0.086 0.090 0.086 0.075 0.063 0.061 0.060];
L5 = [0.054 0.055 0.057 0.065 0.074 0.078 0.074 0.065 0.057 0.055 0.054];
L6 = [0.050 0.051 0.052 0.059 0.065 0.069 0.065 0.059 0.052 0.051 0.050];
% T = [-22.5 -18 -13.5 -9 -4.5 0 4.5 9 13.5 18 22.5];
% I = 0:1:6;
Lx = [L0;L1;L2;L3;L4;L5;L6];
L = interp2(T,I,Lx ,theta,current,'cubic');
end
Here we used (I and T) as input arguments. The are predefined before using the function. To ensure that (I and T) have the same dim as L0,L1.. etc. type this in the command window:
I=-6:0;
T=linspace(-360,360,11);
[L] = Induc2(theta,current,I,T)
and your original function works as:
I=0:6;
T=linspace(-22.5,22.5,11);
[L] = Induc2(theta,current,I,T)
Tips: You can also use
T = -22.5:4.5:22.5;
OR
T = linspace(-22.5,22.5,11);
instead of
T = [-22.5 -18 -13.5 -9 -4.5 0 4.5 9 13.5 18 22.5];
Tip #2: If you want I=-6:6 and T=-360:360; use the same methods above, but be sure to input values of L0,L1,..etc., with similar sizes.

Catégories

En savoir plus sur Read, Write, and Modify Image 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!

Translated by