How to ignore an element(s) in a vector or matrix

33 ビュー (過去 30 日間)
Sam Mahdi
Sam Mahdi 2019 年 8 月 19 日
回答済み: Chris 2019 年 8 月 19 日
Hello everyone,
I'm attempting to run a function, but ignore a certain element within my vector. I've looked online, but most of the answers actually outright remove the element(s) in question, rather than having the function ignore them.
Here is the basic setup:
X = [ones(3,1) magic(3)];
y = [1 0 1]';
theta = [-2 -1 1 2]';
with my equations:
h=sigmoid(X*theta);
% where sigmoid is simply 1/(1+e^-(stuff in parenthesis))
sum_values=(log(h')*(-y)-((log(1-h')*(1-y))));
J=(1/m)*sum_values+(lambda/(2*m))*(sum(theta).^2);
grad=((1/m)*((h-y)'*X)')+(lambda/m)*(theta);
Now in the above setup, I don't want to use theta0 values (i.e. theta(1,1) and X(:,1))
My original solution was to outright remove it:
b=theta;
b(1)=[];
c=X;
c(:,1)=[];
J=(1/m)*sum_values+(lambda/(2*m))*(sum(b'.^2));
grad=((1/m)*((h-y)'*c)')+(lambda/m)*(b);
This doesn't work however, because the function is assuming you are using the original size of X and theta (and I am now using b and c, which are different size vectors and matrices). So what I want to do is simply ignore the certain elements within my vector and matrix, but I don't want to eliminate them (i.e. create a new differently sized matrix/vector). All the stuff I've seen so far eliminate the actual value using the same logic as the above technique I tried.

採用された回答

Chris
Chris 2019 年 8 月 19 日
You can specify a sub compontent of a matrix but the resulting matrix math needs to remain logical
>> theta = [1,2,3,4]; alpha = [5,6,7,8];
>> theta(2:4) .* alpha(2:4)
ans =
12 21 32
>> theta(2:4) * alpha(2:4)'
ans =
65
theta(2:4) * alpha(2:4)
Error using * ...

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInterpolation についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by