查看完整版本 : [求助]奇怪的小问题!!
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:
数据类型的问题 在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?按照程序算出来的好像也是整数啊?
数据类型的问题 在x(1,n)里 n必须是整数 :
for i=0:0.001:1.023
n=floor(i*1000+1);
x(1,n)=[i*1000];
end
你这里用floor肯定会在32位计算机上出错。
不信你去试试, n != 1:1024。
floor(x)函数是将x向负无穷方向舍入。
floor( 3.999999999 ) = 3,你写的是无法得到楼主预期得到的结果的。
按楼主的意思来看,应该用round而非floor。
yingmuhaha
2008-08-30, 15:05
楼上的解答真是好,但是我不明白为什么要加floor?按照程序算出来的好像也是整数啊?
是取整的问题,楼主自己运行一下,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:
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.