MATLAB: Possible to simplify vector expression

condenseevalexpressionforgenvarnamelistMATLABscriptsimplifyvariablevector

While writing a script…
My goal was to have a vector defined with a long list of terms that show the difference in adjacent temperatures for an already defined column of values(male_temperature).
temp_diff = [(male_temperature(1) - male_temperature(2)) (male_temperature(2) - male_temperature(3)) all the way to (male_temperature(23) - male_temperature(24))]
after much trouble and research, managed to simplify it to:
for k = 1:23;
v = genvarname('d', who);
eval([v ' = male_temperature(k) - male_temperature(k+1)']);
end
temp_diff = [d d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22]
clear d d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22
Is there a better way to simplify this or a different way of doing this. Is there any way to better simplify the vector expression (temp_diff) at all? It is inefficient having to type out all these variables.

Best Answer

for step = 1:23
temp_diff(step) = male_temperature(step) - male_temperature(step +1);
end
I think this would work for you, based on my understanding of the problem.
Related Question