Re: [問題] 陣列迴圈處理已回收

看板MATLAB作者 (大長今)時間16年前 (2009/09/04 14:48), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《jirolee (~JirO Style~)》之銘言: : 各位前輩,小弟處理Oracle的DB資料要將其轉為分析格式 : ex. Oracle格式 先讀入Matlab為cell_array內容如下 : CustomerA, item1 , 10 : CustomerA, item2 , 20 : CustomerA, item4 , 50 : CustomerB, item1 , 20 : CustomerB, item3 , 40 : CustomerB, item4 , 20 : CustomerC, item1 , 30 : CustomerC, item2 , 50 : ex. 要湊的分析格式final_cell : item1 item2 item3 item4 : CustomerA 10 20 0 50 : CustomerB 20 0 40 20 : CustomerC 30 50 0 0 : % 小弟的想法如下 : unique_customer=unique(cell_array(:,1)); : unique_item=unique(cell_array(:,2)); : final_cell=cell(length(unique_customer),length(unique_item)); : for i=1:size(unique_customer,1) : for j=1:size(unique_customer,1) % 請忽略找不到的情況..僅表達困難處 : final_cell{i,j}=cell_array(find(strcmp(cell_array(:,2),'item1')==1),3); : end : end : % 這樣的確可以做到,但是當資料筆數與欄位多時,整個效率差 : 不知道各位前輩有沒有什麼好方法呢? unique_customer=unique(cell_array(:,1)); unique_item=unique(cell_array(:,2)); ans=zeros(length(unique_customer),length(unique_item)); for i=1:length(cell_array(:,1)) s=double(char(cell_array(i,1)))-64; t=double(char(cell_array(i,2)))-48; ans(s(end),t(end))=cell2mat(cell_array(i,3)); end ans 是不是你要的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.57.92
文章代碼(AID): #1AeBXHk0 (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1AeBXHk0 (MATLAB)