2016-08-18 6 views
1

行列のサイズは100x1です。行列の各行の値を関数に繰り返し入力したいと考えています。たとえば、L1は、行列LL2の行2などの行1を表します。 Lの各値を入力しようとしている私の関数をYと表記してください。したがって、私はL1Yに入力してY1L2Y2としています。行列の行の値を反復して関数に入力する

私は本当に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

100x1の行列は単なるベクトルです!ですから、このような配列全体をループすることができます:あなたのコードu

for i = 1:100 

     do something with Y(L1) 

end 
+0

私は上記を試しましたが、各L入力のy出力とは対照的に、yの100x1出力を生成していました。応答ありがとう:) – user136754

0

は単なるスカラであるので、あなたは、単純な要素単位の演算を使用することができます。

あなたのベクトルを与える
y = log(L./u); 

y同じサイズのLy(k) = log(L(k)/u)

関連する問題