2015-02-13 2 views
0

У меня есть простой вопрос в Matlab. Как я могу создать цикл for, который будет выбирать значение из вектора, для которого результат наименьший, и записать выбранное значение из вектора в файл .txt? Например, если у меня есть:Базовый для петли в Matlab

T = 100; 
W = 20; 
h = [h1 h2 h3 ... ]; 
y = 2*T*W/h; 

Я хочу создать цикл, который будет искать вектор Н для значения, что обеспечит минимальное значение у и записать выбранный час в .txt. Любая помощь будет принята с благодарностью. Благодаря

ответ

0

Для цикла:

min_y = 2*T*W/h(1); 
h_chosen = 1; 
for i = 2:length(h) 
    if min_y > 2*T*W/h(i) 
    min_y = 2*T*W/h(i); 
    h_chosen = i; 
    end 
end 

Гораздо быстрее, чем для петли:

Написать в .txt файл: (http://www.mathworks.com/help/matlab/ref/fprintf.html)

fileID = fopen('min_h.txt','w'); 
fprintf(fileID, '%d\n', h_chosen); 
+0

Эй @scmg спасибо за ваш ответ, но вместо позиции я хочу написать точное значение h_chosen. И мой второй вопрос: может ли это быть сделано с моделью simulink внутри цикла для моделирования циклов для каждого значения h и зависит от результата моделирования для выбора и отображения/записи значения h, которое обеспечивает минимальный результат? Еще раз спасибо!! –

+0

Вы попробовали код? 'h_chosen = h (idx)' дает вам значение 'h_chosen' ... о модели simulink, я не уверен, вы можете попробовать или хотя бы опубликовать некоторые примеры ... – scmg

+0

Почему' arrayfun'? Вы можете просто использовать 'min (2 * T * W./h)' – hbaderts