0
我有137x19單元格陣列位置(1,4).loc,我想查找水平連續值出現在位置( 1,4)的.loc。我已使用此代碼:matlab:如何加快單元格陣列中連續值的計數
x=Location(1,4).loc;
y={x(:,1),x(:,2)};
for ii=1:137
cnt(ii,1)=sum(strcmp(x(:,1),y{1,1}{ii,1})&strcmp(x(:,2),y{1,2}{ii,1}));
end
y={x(:,1),x(:,2),x(:,3)};
for ii=1:137
cnt(ii,2)=sum(strcmp(x(:,1),y{1,1}{ii,1})&strcmp(x(:,2),y{1,2}{ii,1})&strcmp(x(:,3),y{1,3}{ii,1}));
end
y={x(:,1),x(:,2),x(:,3),x(:,4)};
for ii=1:137
cnt(ii,3)=sum(strcmp(x(:,1),y{1,1}{ii,1})&strcmp(x(:,2),y{1,2}{ii,1})&strcmp(x(:,3),y{1,3}{ii,1})&strcmp(x(:,4),y{1,4}{ii,1}));
end
y={x(:,1),x(:,2),x(:,3),x(:,4),x(:,5)};
for ii=1:137
cnt(ii,4)=sum(strcmp(x(:,1),y{1,1}{ii,1})&strcmp(x(:,2),y{1,2}{ii,1})&strcmp(x(:,3),y{1,3}{ii,1})&strcmp(x(:,4),y{1,4}{ii,1})&strcmp(x(:,5),y{1,5}{ii,1}));
end
...繼續所有列。這段代碼運行並給了我正確的結果,但它不是自動的,而且速度很慢。你能給我一些想法來自動化和加速代碼嗎?
如果它們是數字,爲什麼不先將它轉換爲矩陣?使用數字相等而不是字符串比較? – GameOfThrows
是的,好主意!所以,我不必每次都重寫y = ....你能提出一個方法來加速代碼,避免18次總和(strcmp ....)嗎? – Ely
也考慮'diff' – Amro