Contare Occorrenze Array MATLAB
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
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
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
Se non si tratta di un esercizio allora userei il seguente:
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\).
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\).
ti ringrazio..la notte mi ha fatto un brutto scherzo..avevi ragione bastava sommare

