How to get the two outputs from "function"

I have the below code which needs to provide both nodes and connectivity matrices. The formulation and for-loop is all correct I believe but I'm only getting the nodes matrix but not the connectivity matrix. If I remove the semicolon after connectivity(:,i) = [p,q], I'm getting matrices for all the iterations. All I need is the output to have final nodes and connectivity matrices like in the image attached. I'm using a N value of 6 and R value of 1. It's easy I believe but I'm not thinking straight. Help much appreciated. Thank you!
function [nodes, connectivity] = stat(N, R)
nodes = zeros(2,N);
connectivity = zeros(2,N);
for i=1:N
a = (360/N)*(pi/180)*(i-1);
x = R*cos(a);
y = R*sin(a);
nodes(:,i) = [x;y];
p = i;
q = i+1;
if q>N
q=1;
end
connectivity(:,i) = [p;q];
end
end

2 Comments

On my system your function gives back both nodes and connectivity:
[nodes, connectivity] = stat(10, pi)
nodes =
3.1416 2.5416 0.9708 -0.9708 -2.5416 -3.1416 -2.5416 -0.9708 0.9708 2.5416
0 1.8466 2.9878 2.9878 1.8466 0.0000 -1.8466 -2.9878 -2.9878 -1.8466
connectivity =
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 1
I only got nodes as output, that too it doesn't say nodes, it says "ans". Can you help me if there's some change in settings to get the output like yours.

Sign in to comment.

 Accepted Answer

I suspect you are not invoking it correctly. Be sure to use two outputs when you call it:
[n, c] = stat(N, R)

2 Comments

You mean in the end?
Huh? What "end"? In your main program stat calls stat() of course. You're probably doing
stat(N, R)
and not
[n, c] = stat(N, R)
like Walter said.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!