View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Linearly spaced multidimensional matrix without loop

4.7 | 8 ratings Rate this file 14 Downloads (last 30 days) File Size: 2.52 KB File ID: #22824 Version: 1.3

Linearly spaced multidimensional matrix without loop


Steeve AMBROISE (view profile)


29 Jan 2009 (Updated )

Generates a N-dimensional matrix of linearly equally spaced points between the matrices d1 and d2.

| Watch this File

File Information

LINSPACENDIM is a good extension of the Matlab function linspace to any multidimensional elements.
LINSPACENDIM(d1, d2) generates a multi-dimensional
  matrix of 100 linearly equally spaced points between
  each element of matrices d1 and d2.

  LINSPACENDIM(d1, d2, N) generates N points between
  each element of matrices X1 and X2.

      d1 = rand(3, 2, 4); d2 = rand(size(d1)); n = 10;

      y = linspaceNDim(d1, d2, n) returns a multidimensional matrix y of
      size (3, 2, 4, 10)

  Class support for inputs X1,X2:
     float: Multidimensional matrix, vector, double, single

--> I did not use any Loop! <--

I use an old function that I wrote to make the tensor product of two(2) multidimensional matrices of of any size and any number of dimensions.


This file inspired Ndlinspace (V1.1, Feb 2008).

MATLAB release MATLAB 8.3 (R2014a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (11)
11 Nov 2014 Alessandro Masullo

In 2D you can use these simple commands, that are much faster:

A = randi(10,1000,1);
B = randi(10,1000,1)+20;
N = 1500;

dx = (B-A)/(N-1);
AB = repmat(dx,1,N);
AB(:,1) = A;
AB = cumsum(AB,2);

Comment only
25 Jul 2014 Pawel

Pawel (view profile)

I've found this code very helpful. However, there is a minor issue. The output in the case of scalar arguments d1 and d2 is a column vector, while in the case of arguments of higher dimensionality, the output is transposed (it is a matrix consisting of raw vectors, corresponding to each element of the argument). If I'm not clear, just take a look how the output looks like when d1 and d2 are scalars, and when they are vectors 1 by 2.

I corrected the code by adding in the end of the function the following line:

if NDim == 0, y = y'; end

It changes the output of the scalar arguments case a raw vector, consistent with argument of higher dimensionality and with the original linspace function.

26 Jun 2014 Paul

Paul (view profile)

29 May 2014 paula

paula (view profile)

15 Feb 2013 Steeve A.

You're welcome Pio.

Comment only
14 Feb 2013 Pio Nonus

You saved me a lot of time

04 Feb 2009 Jos (10584)

Jos (10584) (view profile)

03 Feb 2009 Youri

Youri (view profile)

Great program!

Jos, you have to change your rating.


03 Feb 2009 Jos (10584)

Jos (10584) (view profile)

The error indeed seems to be fixed.

Comment only
02 Feb 2009 Steeve A.

I tried it after modifications. It works perfectly.


02 Feb 2009 Jos (10584)

Jos (10584) (view profile)

>> linspacendim(0,1)
??? Error using ==> cat
CAT arguments dimensions are not consistent.
Error in ==> LINSPACENDIM at 39
y = cat(NDim+1, Sum1 + Sum2, d2);

This error occurs for every 1-by-N-by-M-... matrix. There are some other issues as well. For instance, in the help:
- n = 1 in the example?

30 Jan 2009 1.1


02 Feb 2009 1.2

I fix the bug that occured when the first (or some) dimensions are singletons.

Thanks to Jos for your comments.

19 May 2014 1.3

update comments

Contact us