2016-08-18 3 views
1

У меня есть матрица размером 100x1. Я хочу ввести каждое значение строки моей матрицы в функцию итеративно. Например, скажем L1 представляет строку 1 моей матрицы L, L2 строка 2 и так далее. Скажем, моя функция, которую я пытаюсь ввести каждое значение L, обозначается Y. Поэтому я хочу ввести L1 в Y, чтобы получить Y1, L2 для Y2 и так далее.Значения строк матрицы ввода итеративно в функцию

Я мог бы действительно помочь с тем, как это реализовать в Matlab?

принимает код выглядит следующим образом:

load('logregdata.mat') 

%%Data set X is a series of coordinates in two dimensions and t represents class labels. Data set is for a binary classification problem. 

u = rand; 

[w1,w2] = meshgrid(-5:0.1:5,-5:0.1:5); 

w = zeros(2,1); 

w_all = zeros(100,2); 

%Probabilistic term of logistic classifier prob_t = 1./(1+exp(-[w1(:) w2(:)]*X')); 

L = sum(log(prob_t).*repmat(t',numel(w1),1),2); 

L= L + sum (log(1-prob_t).*repmat(1-t',numel(w1),1),2); 

u = rand; 

y = log(L/u); 

Спасибо за вашу помощь заранее.

+0

Почему бы не изменить функцию так, чтобы она могла поддерживать вектор? – obchardon

+0

Функция просто Y = log (L/u), где u равномерно распределенное случайное число – user136754

+0

Ваш текущий код поможет. Векторизация сильно зависит от выполняемых операций. Является ли 'u' одинаковым для каждой строки' L'? – beaker

ответ

0

A 100x1 матрица - это всего лишь вектор! Таким образом, вы можете перебрать весь массив как это:

for i = 1:100 

     do something with Y(L1) 

end 
+0

Я пробовал выше, но он производил выход 100x1 для y, а не y-выход для каждого L-входа. Спасибо за ответ :) – user136754

0

В коде u просто скаляр, так что вы можете использовать простые поэлементно операции:

y = log(L./u); 

, который даст вам вектор y такого же размера L, что y(k) = log(L(k)/u)

Смежные вопросы