Contare Occorrenze Array MATLAB

dengel
Vorrei un aiuto per contare le occorrenze di un array

Es: A = [1 1 3 5] -> (1*2 + 3*1 + 5*1) -> output 13

oppure in caso di non ripetuti A = [ 2 1 3 ] -> (2*1 + 1*1+3*1) -> output 5

ho provato così ma non funziona

for i=1:length(Array)
Ctot=Ctot+ Array(i)*contaOcc(Array,Array(i));

e la funziona che conta le occorrenze è questa

function res = contaOcc(A,elem)

conta=1;
for i=1:length(A)
if(A(i)==elem) conta=conta+1;
end
end
res=conta;

aiuto

Risposte
apatriarca
Utilizza il tag code per inserire il codice. Non funziona perché consideri più volte i valori ripetuti, ma ti faccio notare che stai semplicemente calcolando la somma degli elementi dell'array. Non c'è alcuna ragione per cui tu debba fare qualcosa di più complicato di
sum = 0;
for i=1:length(Array)
    sum = sum + Array(i);
end

Se non si tratta di un esercizio allora userei il seguente:
res = sum(Array);


EDIT: Non capisco gli output che hai scritto però.. \( 2 \cdot 1 + 1 \cdot 1 + 3 \cdot 1 = 6 \) e non a \(5\)... Inoltre \( 1 \cdot 2 + 3 \cdot 1 + 5 \cdot 1 = 10 \) e non a \(13\).

dengel
ti ringrazio..la notte mi ha fatto un brutto scherzo..avevi ragione bastava sommare :) :)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.