Циклы Matlab для функции

Я пытаюсь сделать цикл, чтобы повторить функцию Matlab 1000 раз. Вот программа

d = unifrnd (0,10,[10,1]);
c = d.^(-2);
a = round(unifrnd(0,1,[1,10]);
e = a*c
btotal = e+1
SIR = 1/btotal

Я хочу повторить эту функцию 1000 раз, каждый раз значение SIR будет меняться из-за сгенерированного случайного числа. Для каждой итерации я хочу, чтобы значение SIR складывалось (суммировалось), а в конце 1000-й итерации находилось среднее значение SIR (среднее).

Спасибо за помощь


person Tan Wei Jin    schedule 12.12.2009    source источник
comment
Привет, это домашнее задание? Что вы пробовали и с какими проблемами столкнулись?   -  person catchmeifyoutry    schedule 13.12.2009
comment
Привет, спасибо за ответ, это не домашняя работа, я просто занимаюсь коммуникационным проектом с другом, и нам нужно смоделировать отношение сигнала к помехам беспроводной сети. Я совершенно новичок в Matlab, поэтому я точно не знаю, как реализовать циклы и изменить их точно так, как мне нужно, как указано выше.   -  person Tan Wei Jin    schedule 13.12.2009


Ответы (1)


Код ниже реализует то, что вы описали:

генСИР.м

function SIR = genSIR()
    d = unifrnd (0,10,[10,1]);
    c = d.^(-2);
    a = round(unifrnd(0,1,[1,10]));
    e = a*c;
    btotal = e+1;
    SIR = 1/btotal;
end

основная программа

N = 1000;
SIR = zeros(N,1);
for i=1:N
    SIR(i) = genSIR();
end
s = sum(SIR)
m = mean(SIR)

хотя вашу функцию можно упростить...

person Amro    schedule 13.12.2009
comment
удивительный ответ, но как я могу вернуть значения из функции? пример: функция выполнит расчет и вернет мне 3 переменные (массив переменных) - person Zalaboza; 28.01.2012