注册 登录
编程论坛 Matlab

请教数组问题,谢谢!

Scofield 发布于 2006-11-16 21:06, 923 次点击
%我想通过分段提取mydata中的数组,每100行数据提取一次,运算后放到数组ww中,共提取40次
%A_array 提取前2列,Y_array提取第三列;
%但是程序 ww(n)=acos(a1/2); //有问题
%总有问题,请教大侠~谢谢!!!

%程序是这样的:

mydata=load('Data1.txt');
rand('state',0);
ww=rand(1,40);

for n=0:39
A_array=mydata((1+100*n)100+100*n),(1:2));
Y_array=mydata((1+100*n)100+100*n),3);
a_array=inv((A_array)'*(A_array))*(A_array)'*Y_array
a1=a_array(1,1) %a1=2
a1=vpa(a1,10);
ww(n)=acos(a1/2); //有问题
end ;
4 回复
#2
尘埃1222006-11-17 15:06
呵呵,matlab中数组下标从1开始,如果下标为0会报错

你将循环设为 1:40 ,改变循环中语句相应的下标,你再试试,应该可以的
#3
Scofield2006-11-17 20:37

我把程序修改了:
%提取数据
mydata=load('Data.txt');
rand('state',0);
ww=rand(1,40);

for n=1:40
A_array=mydata((1+100*(n-1):100+100*(n-1)),(1:2));% 1-40
Y_array=mydata((1+100*(n-1):100+100*(n-1)),3);
a_array=inv((A_array)'*(A_array))*(A_array)'*Y_array
a1=a_array(1,1) %a1=2
a1=vpa(a1,10);
ww(n)=acos(a1/2); %??? Conversion to double from sym is not possible.
%On line 12 ==> ww(n)=acos(a1/2);
end ;

还是有问题啊~~郁闷~

#4
hitzhang2006-11-18 11:31
a1的属性是sym不是数字型
a1=double(a1)即可
#5
Scofield2006-11-19 14:15
谢谢!
1