Matlab - Subtract 1 vector with another in struct array

subtract vector from matrix - matlab
subtract scalar from matrix matlab
matlab subtract value from each element in array
matlab subtract matrices different size
how to subtract a value from a vector in matlab
subtract number from each element in array matlab
how to subtract array elements
matlab offset array

I have to different struct arrays(In the same Matlab file), what I want is to take 1 parameter/vector from a variable in a struct array and subtract it with different parameters from another variable in another struct array, is this possible?

Here is a small part of my code:

Dist(1).name = 'Pristina'
Dist(1).KM_To_Fushe_ks = 13.7   % 199-13.7 = 
Dist(1).KM_to_Lipjan = 8.7      % 199-8.7  =
Dist(1).KM_to_Sllatina = 4.2    % 199-4.2  =
Dist(1).KM_to_Hajvali = 3.5     % 199-3.5  =
Dist(1).KM_to_Mitrovica = 46.9  % 199-46.9 = 
Dist(1).KM_to_Anija = 1.9       % 199-1.9  =



EV(1).name = 'Nissan Leaf 24 kWh pack'
EV(1).RangeInKM_By_Manufacturer = 199 %SUBTRACT this with parameters above:
EV(1).Battery_Capacity = 21.6
EV(1).Battery_Warranty_KM = 100000
EV(1).Battery_Warrany_Year = 5
EV(1).EnginePower_Kw = 80
EV(1).EnginePower_hK = 109
EV(1).Torque_in_NewtonMeter = 254
EV(1).QuickCharging_type = 'CHAdeMO'
EV(1).QuickChargingEffect_kW_DC = 50
EV(1).NormalCharging_OnBoard_kW_AC = 3.3
EV(1).Seats = 5
EV(1).Luggage_in_Liters = 370
EV(1).Consumption_Mixed_kWh_per_10km_NEDC = 1.5
EV(1).Weight_Without_Driver = 1475
EV(1).TopSpeed_KM_per_hour = 144
EV(1).Acceleration_0to100KM_per_hour = 11.5
EV(1).RangeInKM_By_Manufacturer_RANK = 10

What I want is to have the number off 199 as a vector, and substract it by all these numbers = [13.7, 8.7, 4.2, 3.5, 46.9, 1.9]

How to do this?

Maybe I misinterpret your question, but this seem to work:

EV(1).RangeInKM_By_Manufacturer = 199 - Dist(1).KM_To_Fushe_ks 

In the line you quote in your question, you left the initialization of KM_To_Fushe_ks after the difference; in short, you cannot have to vaiable assignements in the same command. Also, if you end your lines with semi-colons you will suppress the output to the command window. Like this:

Dist(1).name = 'Pristina';
Dist(1).KM_To_Fushe_ks = 13.7;   
Dist(1).KM_to_Lipjan = 8.7;    
% Etc...

Subtract a constant value from some elements in a struct, temp_struct(1).budget=8 and I want to subtract a constant value from both of them (replacing 8 with the new Also, another benefit is that the above code is simpler than separated list to assign to the elements of your structure array. conversion to matrix + conversion to cell array and expansion to list. Subtracting the next element on a vector? Basic. Learn more about subtraction, vector MATLAB. and want a new vector with the subtraction of the first by the

Here is one solution to my problem:

distances = [KM_to_Fushe_KS, KM_to_Lipjan];


remainingrange = arrayfun(@(s) s.RangeInKM - distances, EV, 'UniformOutput', false)

Or I could do this:

remainingrange = cell(size(EV));
for evidx = 1:numel(EV)
    remaingrange{evidx} = EV(evidx).RangeInKM - distances;
end

how to do subtraction inside Structure - MATLAB Answers, 1xN Structure call Structure.result Structure(1).result=1x5 Array ,[ 1 2 3 make it a 1x7 array/vector and then probably subtraction should work. For instance, s = struct('a',[1 2 3]) creates a 1-by-1 structure, where s.a = [1 2 3]. If value is a nonscalar cell array, then s is a structure array with the same dimensions as value .

Another solution is doing is putting multiple distances in once matrix:

Example:

Towns = {'Town1', 'Town2', 'Town3', 'Town4'};
distances = [0 200 13.7 8.7;
             200 0 13.3 9.3;
             13.7 13.3 0 255;
             8.7 9.3 255 0];


EVs = {'Nissan Leaf 24 kWh pack', 'Nissan Leaf 30 kWh pack'};
ranges = [199 250];

And then I can calculate distances as a 3D matrix:

remainingrange = permute(ranges, [1 3 2]) - distances;  
remainingrange = bsxfun(@minus, permute(ranges, [1 3 2]), distances); 

If I want to check if a EV has not enough range in KM, I could write:

 tooFarForMyEV = find(remainingrange < 0)
 [from, to, ev] = ind2sub(size(remainingrange), tooFarForMyEV);
 lackingrange = table(Towns(from)', Towns(to)', EVs(ev)', remainingrange(tooFarForMyEV), 'VariableNames', {'From', 'To', 'EV', 'Deficit'})

Subtracting the first value from all elements in an array in a structure , Learn more about matlab subtract array structure fields MATLAB. I have 1 x 50 struct array with 20 fields, starting with Time, Speed and Distance. to subtract the first element from all the other elements in each array in the  Subtract array with different size in Matlab. Ask Question Asked 4 years, Matlab - Subtract 1 vector with another in struct array. Hot Network Questions

Matlab - Subtract 1 vector with another in struct array, Maybe I misinterpret your question, but this seem to work: EV(1).​RangeInKM_By_Manufacturer = 199 - Dist(1).KM_To_Fushe_ks. In the line  how to subtract from every element in an array. Learn more about subtract, cell arrays, double array how to subtract from every element in an array.

MATLAB tutorial, The most straightforward way to initialize a matrix is to type a command of the form: You can also add, subtract, multiply or divide all the elements of a vector or matrix by a scalar. 1 to 4, and print its value for each step (the indentations in the for structure are optional). However, MATLAB includes another way to do this. how to get struct array field as a vector?. Learn more about struct, vector, array, select, indices, data

[PDF] MATLAB array manipulation tips and tricks, efficient ways of performing low-level array manipulation in MATLAB. Here, “​manipu- 5 Creating vectors, matrices and arrays. 9 5.1.1 When the class is determined by the scalar to replicate . . . . . . . . . . . . 9 array has zero elements regardless of the length along the other dimensions. 4 Array indices  Is there a way to make a copy of one field of a structured array without doing a loop? I have tried but it just results in the first element.

Comments
  • Ok, so It was that simple in that way i just had to create a new variable: Remaining_Range_in_KM = EV(1).RangeInKM_By_Manufacturer - Dist(1).KM_To_Fushe_ks And then it creates a new array called "Remaining_Range_in_KM", so now I just need to figure out how I can get all distances.
  • This is what I did yesterday(Answered it on my own comment).