"I know about the matlab function fullfact([,]) but since I will use decimal numbers i needed a differen solution."
There's no reason still to not use fullfact; the levels [1:Nl] are simply placeholders for the actual levels for each factor, not the experimental levels themselves.
If you want to write an array/file that contains the actual levels themselves, just use a lookup table of the level into the values you define for each level. Nothing more is needed.
Small example for brevity; principle holds in general no matter the number of factors and levels...
>> LVLS=[4.3*[-1:1];[pi*[-1 1] nan]].'
Now build the array of experiment levels
You could, of course, keep separate vector arrays for each factor or a cell array, I used an array with a NaN element for the missing levels to avoid the cell array route as it will never be referenced so it's just a placeholder to make a rectangular array.