[Scilab-users] Is there a way to do it with Matrix Operations?
Heinz Nabielek
heinznabielek at icloud.com
Mon Sep 25 20:01:06 CEST 2017
On 25.09.2017, at 18:58, Rafael Guerra wrote:
> Hi Heinz,
>
> Your code example is not working.
> The index ‘i’ runs out of bounds.
>
> Regards,
> Rafael
Sorry, I had forgotten the code line
-->P=cumsum(p)';
So my question again: can you suggest matrix operations that make my code more efficient? The code is meant to generate random deviates for a user-defined discrete distribution.
Below the full set of instructions and example solutions that are good, but achieved in an inefficient way.
Heinz
-->p=[0.1176471 0.2352941 0.0588235 0.3882353 0.2 ];
-->P=cumsum(p)';
-->N=100;X=grand(7,N,'def');C=[];for j=1:7;Count(1:5)=0;for k=1:N;i=1;while X(j,k)>P(i);i=i+1;end;Count(i)=Count(i)+1;end;C=[C Count];end;C
C =
9. 10. 13. 9. 12. 6. 19.
32. 21. 15. 18. 22. 24. 20.
10. 4. 3. 12. 4. 9. 6.
37. 45. 47. 39. 44. 42. 38.
12. 20. 22. 22. 18. 19. 17.
-->N=100;X=grand(7,N,'def');C=[];for j=1:7;Count(1:5)=0;for k=1:N;i=1;while X(j,k)>P(i);i=i+1;end;Count(i)=Count(i)+1;end;C=[C Count];end;C
C =
14. 13. 18. 12. 12. 9. 13.
25. 27. 27. 23. 27. 18. 14.
4. 4. 3. 6. 10. 4. 2.
45. 38. 34. 40. 34. 45. 47.
12. 18. 18. 19. 17. 24. 24.
More information about the users
mailing list