# How can I create a row of numbers form 1 to 10 ?. like this [1.0000, 2.0000, 3.0000,...]?

411 ビュー (過去 30 日間)
Hallo guys, I am so new to matlab, and i know this is a silly question. How can I create a row of numbers form 1 to 10. like this [1.0000, 2.0000, 3.0000,...] with intervals of 1.0000? if I do [1:1:10], I get [1,2,3,..] but I want it like this[1.0000,2.0000,3.0000] kindly help! Thanks in advance.

サインインしてコメントする。

### 採用された回答

John BG 2016 年 5 月 3 日
with
format long;x=1:10
=
1 2 3 4 5 6 7 8 9 10
y=vpa(x,5)
=
[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
y=vpa(x,10)
=
[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
floating point boundaries (without vpa):
flintmax
=
9.007199254740992e+15
intmax
=
2147483647
intmin
=
-2147483648
with fixed point precision objects, details here: http://uk.mathworks.com/help/fixedpoint/ref/fi.html?searchHighlight=fi
you get more than 4 zeros:
a = fi(pi, 1, 8, 3)
a =
3.125000000000000
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 3
but only if it is rounding non-zero decimals:
a = fi(1, 1, 8, 3)
=
1
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 3
a = fi(1.0000, 1, 8, 3)
=
1
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 3
tried 1.0001 and then -0001 but did not work:
b = fi(1.0001, 1) b = 1.000122070312500
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 14
b-.0001
Warning: The behavior of adding or subtracting a fi and a non-fi operand has
changed. The non-fi operand is now cast to the data type of the fi operand.
See the release notes for information on retaining the old behavior of best
precision scaling cast. In - (line 37)
=
1
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 17
FractionLength: 14
c=b-.0001 = 1
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 17
FractionLength: 14
b2=fi(0.0001,1)
=
1.000016927719116e-04
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 28
b-b2 = 1.000022068619728
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 31
FractionLength: 28
d=b-b2 = 1.000022068619728
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 31
FractionLength: 28
d2=vpa(d,4)
=
1.0
If you really want to present the vector exactly with 4 zero decimals, you can translate each figure to char,
x=[1:1:4]
x_char=char(x+48)'
=
1
2
3
4
x2=repmat(['.0000'],4,1)
=
.0000
.0000
.0000
.0000
x_char=[x_char x2]
=
1.0000
2.0000
3.0000
4.0000
John
##### 1 件のコメント表示非表示 なし
Chinonso Collins Unaichi 2016 年 5 月 3 日
Thanks a lot this was very useful

サインインしてコメントする。

### その他の回答 (1 件)

Alessandro Masullo 2016 年 5 月 3 日
Matlab deals with double variables by default. If you write 1, it is actually 1.00000000
If you just want to display it, you can use sprintf('%.5f',1).
To check your variable type, you can use whos
##### 2 件のコメント表示非表示 1 件の古いコメント
Alessandro Masullo 2016 年 5 月 3 日
Yes, you're right. The only real difference comes when you specify the variable type:
K>> format shorteng
K>> double(1:5)
ans =
1.0000e+000 2.0000e+000 3.0000e+000 4.0000e+000 5.0000e+000
K>> uint8(1:5)
ans =
1 2 3 4 5

サインインしてコメントする。

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!