MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]奇怪的小问题!! (https://www.labfans.com/bbs/showthread.php?t=4228)

ruanruan 2008-08-26 22:13

[求助]奇怪的小问题!!
 
小程序1:
for i=1:1024
x(1,n)=i;
end
程序正常,得到一个矩阵,元素为1-1024
小程序2:
for i=0:0.001:1.023
n=i*1000+1;
x(1,n)=i*1000;
end
程序运行到i=0.009的时候提示“??? Subscript indices must either be real positive integers or logicals.”,为什么不能同样得到0-1023的矩阵?
请高手帮忙解答一下这个小问题!!:lovely: :lovely:

pslpsl 2008-08-26 22:57

回复: [求助]奇怪的小问题!!
 
数据类型的问题 在x(1,n)里 n必须是整数 :

for i=0:0.001:1.023
n=floor(i*1000+1);
x(1,n)=[i*1000];
end

ruanruan 2008-08-27 09:06

回复: [求助]奇怪的小问题!!
 
楼上的解答真是好,但是我不明白为什么要加floor?按照程序算出来的好像也是整数啊?

remnant 2008-08-29 23:20

回复: [求助]奇怪的小问题!!
 
[QUOTE=pslpsl;15124]数据类型的问题 在x(1,n)里 n必须是整数 :

for i=0:0.001:1.023
n=floor(i*1000+1);
x(1,n)=[i*1000];
end[/QUOTE]

你这里用floor肯定会在32位计算机上出错。
不信你去试试, n != 1:1024。
floor(x)函数是将x向负无穷方向舍入。
floor( 3.999999999 ) = 3,你写的是无法得到楼主预期得到的结果的。

按楼主的意思来看,应该用round而非floor。

yingmuhaha 2008-08-30 15:05

回复: [求助]奇怪的小问题!!
 
[QUOTE=ruanruan;15127]楼上的解答真是好,但是我不明白为什么要加floor?按照程序算出来的好像也是整数啊?[/QUOTE]

是取整的问题,楼主自己运行一下,n隔几位出现实数类型,有小数点,虽然后面是.00。
至于为什么就不知道了。一般也没必要。

还有向哪个方向取整对于这个问题,在matlab上运行无关紧要。

mathjiang 2008-09-02 15:31

回复: [求助]奇怪的小问题!!
 
for i=1:1024
x(1,n)=i;
end
这一段循环明明不能运行(n的值不明确),楼主怎么得到结果的?

hitzhjtopku 2008-09-04 09:58

回复: [求助]奇怪的小问题!!
 
你的n也没变化啊

coolboy_dsf 2008-09-09 11:25

回复: [求助]奇怪的小问题!!
 
看那意思,改成
for i=1:1024
x(1,i)=i;
end
就行了,没必要纠缠!:tongue:


所有时间均为北京时间。现在的时间是 11:32

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.