作者xm3vul3h06 (蚕哥)
看板MATLAB
标题[问题]应该算...FOR跟阵列的问题?
时间Fri Apr 20 15:18:06 2012
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEVC++,Matlab 2009a
问题(Question):
在C里面可以将数字以每8Bits的长度存在一个阵列 例如 512*511*510=133432320
会存成 x[0]=33432320 x[1]=1,但转成matlab後x(1,1)=33432320 x(1,2)却没有值过去
喂入的资料(Input):
C的部分:a=1,k=3,i=0,s=1,x[10000]={0},x[0]=1,carry=0,N=512
Matlab部分:k=3;N=512,carry=0,x=zeros(1,10000),x1=zeros(1,10000),x(1,1)=1,a=1:k
s=1
预期的正确结果(Expected Output):
x(1,1)=33432320,x(1,2)=1
错误结果(Wrong Output):
x(1,1)=33432320,x(1,2)=0
程式码(Code):(请善用置底文网页, 记得排版)
C:
for(a=1;a<=k;a++)
{
for(i=0;i<s;i++)
{
x[i]=x1[i]=x[i]*N+carry;
carry=x[i]/100000000;
x[i]=x1[i]=x[i]%100000000;
if(carry!=0 && i+1==s)
s++;
}
N-=1;
}
Matlab:
k=3;
N=512;
carry=0;
x=zeros(1,10000);
x1=zeros(1,10000);
s=1;
x(1,1)=1;
for a=1:k
for i=1:s
x(1,i)=x(1,i)*N+carry;
x1(1,i)=x(1,i)*N+carry;
carry=fix(x(1,i)/100000000);
x(1,i)=rem(x(1,i),100000000);
x1(1,i)=rem(x(1,i),100000000);
if (carry~=0 && i==s)
s=s+1;
end
N=N-1;
end
end
补充说明(Supplement):
想请问各位神手,我这样照翻为何C与MATLAB的结果会不一样QQ
我DEBUG好久了,所以上来求助各位神手,如果有发言不慎,还请各位见谅,谢谢:)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.195.133.200
1F:推 sunev:N=N-1;摆错位置了 04/22 01:06
2F:→ sunev:改s没用,for 一开始执行就会定死,你得用while 04/22 01:07