作者blacksmiles ( )
看板MATLAB
标题Re: [问题] 对多个矩阵内的元素进行运算
时间Sat Nov 5 03:55:59 2011
自回
我後来将10个矩阵放在一个cell array中再进行计算
try and error之下好像就可以了,只是程式码写得很罗唆
不晓得有没有更精简的写法?
% (a)create a 1*10 cell array and (b)put the data of 10 trials into the array
run1=cell(1,10); % (a)
for i=1:10 % (b)
y=eval(['trial' num2str(i)]);
run1{1,i}=y;
end
clear trial*
% computation
for i=1:10;
m=find(run1{i}(:,6)==4); eval(['nav_on' num2str(i) '=m']);
n=find(run1{i}(:,6)==9); eval(['nav_off' num2str(i) '=n']);
eval(['T_navOn' num2str(i) '=run1{i}(m,3)']);
eval(['T_navOff' num2str(i) '=run1{i}(n,3)']);
p=eval(['T_navOn' num2str(i)]);
q=eval(['T_navOff' num2str(i)]);
if isempty(p) | isempty(q)
i=i+1
else
eval(['NavTime' num2str(i) '=q-p']);
end
end
※ 引述《blacksmiles ( )》之铭言:
: 各位板友大家好,matlab新手来向大家请教
: 我现在有10个矩阵trial1~trial10 每个矩阵都是12栏,但行数不等 以下为其中一个例子
: 2 483974 482473 1 6 2 0 0 0 0 0
: 3 484007 484006 1 6 4 0 0.3 0 0 0
: 124 486040 486039 1 6 6 0 45 0 0 0
: 244 488057 488056 1 6 8 0 45 0 0 0
: 356 489940 489939 1 6 5 -45.44 45 0 0 0
: 456 491623 491623 1 6 5 -90.4398 45 0 0
: 556 493306 493306 1 6 9 -135.44 45 0 0 0
: 599 494040 494040 1 7 10 -154.339 45 0 0
: 642 494773 494773 1 7 11 -154.339 45 0 0
: 1104 543001 541999 1 7 12 -154.339 45 0 9
: 1106 543040 543039 1 4 13 -154.339 45 0 9
: 想找出每个矩阵中第六栏的元素值为4和9所对应的行数
: (4和9此两个code不一定在每个矩阵中都存在)
: 再将此两行在第三栏中所对应的值相减
: 请问应该怎麽做呢?
: 目前是想到可以用回圈和eval配合进行10个矩阵的运算
: find可以找出我想要的资料
: 但自己试着将这些零散的片段组合起来时却怎麽都跑不出想要的结果
: 爬文也没有找到类似的问题
: 请高手们指点迷津 谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.168.220.83