作者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