When I run my function I want a row vector not a column

I have a simple function that generates large numbers. The ans is a column vector but I want a row. ans' changes it to what I want but I need it to run in the function. I'm not sure how to do that?

 Accepted Answer

One simple solution is to use subscript indexing (but this will be quite inefficient):
function n = num(k)
n(1,1) = 1;
n(2,1) = 1;
k = 3;
while k<=100
n(k,1) = n(k-1)+n(k-2);
k = k+1;
end
The best solution is to preallocate the output array (much more efficient):
function n = num(k)
n = ones(100,1); % preallocate
k = 3;
while k<=numel(n)
n(k) = n(k-1)+n(k-2);
k = k+1;
end

More Answers (2)

Here's what I have:
function [n] = num(k)
n(1)=1;
n(2)=1;
k = 3;
while k <=100
n(k) = n(k-1)+n(k-2);
k= (k+1);
end
The answer is a 1x100 double. (they probably look familiar) I need a 100x1 matrix.
furcifer
furcifer on 18 Oct 2018
Edited: furcifer on 18 Oct 2018
Yes, that's exactly it! Thank you for the help everyone.
eta: I'll use "zeros" and leave it defined as it is, but it's the allocation that really helped. Thanks, it was driving me mental.

Products

Release

R2018b

Asked:

on 18 Oct 2018

Edited:

on 18 Oct 2018

Community Treasure Hunt

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

Start Hunting!