Assigning a vector to a matrix row in MATLAB

I spent one hour trying to figure out an error in MATLAB, I’ve learned something useful.

I had:

for c = 1:num_labels
initial_theta = zeros(n + 1, 1);
[all_theta(c)] = (fmincg(@(t)(lrCostFunction(t, X, (y == c), lambda)), ...
initial_theta, options))'
end

It was:

for c = 1:num_labels
initial_theta = zeros(n + 1, 1);
[all_theta(c,:)] = (fmincg(@(t)(lrCostFunction(t, X, (y == c), lambda)), ...
initial_theta, options))'
end

Explanation:

[all_theta(c)] is a scalar

[all_theta(c,:)] is a vector

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s