![]() |
[求助]奇怪的小问题!!
小程序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 |
回复: [求助]奇怪的小问题!!
楼上的解答真是好,但是我不明白为什么要加floor?按照程序算出来的好像也是整数啊?
|
回复: [求助]奇怪的小问题!!
[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。 |
回复: [求助]奇怪的小问题!!
[QUOTE=ruanruan;15127]楼上的解答真是好,但是我不明白为什么要加floor?按照程序算出来的好像也是整数啊?[/QUOTE]
是取整的问题,楼主自己运行一下,n隔几位出现实数类型,有小数点,虽然后面是.00。 至于为什么就不知道了。一般也没必要。 还有向哪个方向取整对于这个问题,在matlab上运行无关紧要。 |
回复: [求助]奇怪的小问题!!
for i=1:1024
x(1,n)=i; end 这一段循环明明不能运行(n的值不明确),楼主怎么得到结果的? |
回复: [求助]奇怪的小问题!!
你的n也没变化啊
|
回复: [求助]奇怪的小问题!!
看那意思,改成
for i=1:1024 x(1,i)=i; end 就行了,没必要纠缠!:tongue: |
所有时间均为北京时间。现在的时间是 11:32。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.