Use linspace without scalar input?
22 views (last 30 days)
Show older comments
Andrew Poissant
on 29 Aug 2017
Commented: Ali Talha Atici
on 19 Apr 2022
I want to use linspace that goes from two non-scalar terms. Is there a way to use linspace with specified number of points, n, for decimal values for inputs? Example code is below for what I am looking for.
x = 0.01;
y = [1.01, 3.01];
n = 10;
dxy = linspace(x, y, n);
3 Comments
Accepted Answer
Guillaume
on 29 Aug 2017
Edited: Guillaume
on 29 Aug 2017
x = 0.01;
y = [1.01, 3.01]; %would be better as a column vector as you wouldn't to tranpose it in the arrayfun
n = 10;
dxy = cell2mat(arrayfun(@(e) linspace(x, e, n), y', 'UniformOutput', false))
Or using a loop:
x = 0.01;
y = [1.01, 3.01]; %would be better as a column vector as you wouldn't to tranpose it in the arrayfun
n = 10;
dxy = zeros(numel(y), n);
for row = 1:numel(y)
dxy(row, :) = linspace(x, y(row), n);
end
or using Jan's idea but with R2016b or later syntax:
x = 0.01;
y = [1.01, 3.01]; %would be better as a column vector as you wouldn't the transpose in the calculation of dxy
n = 10;
dxy = (0:n-1) .* (y'-x)/n + x
2 Comments
Ali Talha Atici
on 19 Apr 2022
Thank you, Guillaume,
I have a little update to the last script to match the results.
x = 0.01;
y = [1.01, 3.01]; %would be better as a column vector as you wouldn't the transpose in the calculation of dxy
n = 10;
dxy = (0:n-1) .* (y'-x)/(n-1) + x
More Answers (2)
Stephen23
on 29 Aug 2017
Edited: Stephen23
on 29 Aug 2017
>> x = 0.01;
>> y = [1.01, 3.01];
>> n = 10;
>> bsxfun(@plus,x*linspace(1,0,n),bsxfun(@times,y(:),linspace(0,1,n)))
ans =
0.010000 0.121111 0.232222 0.343333 0.454444 0.565556 0.676667 0.787778 0.898889 1.010000
0.010000 0.343333 0.676667 1.010000 1.343333 1.676667 2.010000 2.343333 2.676667 3.010000
MATLAB versions with implicit expansion could probably do this (untested):
x.*linspace(1,0,n) + y(:).*linspace(0,1,n)
See Also
Categories
Find more on Creating and Concatenating Matrices 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!