How to store the array in a for loop?

1 回表示 (過去 30 日間)
SUSHMA MB
SUSHMA MB 2015 年 11 月 23 日
コメント済み: SUSHMA MB 2015 年 11 月 24 日
I have written a code as mentioned below, its a for loop in which i want to store the array of each polygon, but im only able to save the last polygon values.
function [x, y, dt] = simple_polygon(numSides,numpoly)
if numSides < 3
x = [];
y = [];
dt = DelaunayTri();
return
end
oldState = warning('off', 'MATLAB:TriRep:PtsNotInTriWarnId');
valueOfX = zeros(100,100);
valueOfY = zeros(100,100);
figure
for i = 1 : numpoly
fudge = ceil(numSides/10);
x = rand(numSides+fudge, 1);
y = rand(numSides+fudge, 1);
dt = DelaunayTri(x, y);
boundaryEdges = freeBoundary(dt);
numEdges = size(boundaryEdges, 1);
while numEdges ~= numSides
if numEdges > numSides
triIndex = vertexAttachments(dt, boundaryEdges(:,1));
triIndex = triIndex(randperm(numel(triIndex)));
keep = (cellfun('size', triIndex, 2) ~= 1);
end
if (numEdges < numSides) || all(keep)
triIndex = edgeAttachments(dt, boundaryEdges);
triIndex = triIndex(randperm(numel(triIndex)));
triPoints = dt([triIndex{:}], :);
keep = all(ismember(triPoints, boundaryEdges(:,1)), 2);
end
if all(keep)
warning('Couldn''t achieve desired number of sides!');
break
end
triPoints = dt.Triangulation;
triPoints(triIndex{find(~keep, 1)}, :) = [];
dt = TriRep(triPoints, x, y);
boundaryEdges = freeBoundary(dt);
numEdges = size(boundaryEdges, 1);
end
boundaryEdges = [boundaryEdges(:,1); boundaryEdges(1,1)];
x = dt.X(boundaryEdges, 1);
y = dt.X(boundaryEdges, 2);
valueOfX(i) = x;
valueOfY(i)= y;
warning(oldState);
hold all
patch(x,y,'r-')
end
end
In the code, in "valueofX and valueofY", i tried to store the array, but its showing error. Please help me to store the array for each polygon.

採用された回答

Stalin Samuel
Stalin Samuel 2015 年 11 月 23 日
編集済み: Stalin Samuel 2015 年 11 月 23 日
  • in your function you return the values of x,y
  • function [x, y, dt] = simple_polygon(numSides,numpoly)
  • the array values are stored in valueOfX,valueOfY
  • So you need to change your function like-----> function [valueOfX, valueOfY, dt] = simple_polygon(numSides,numpoly)
  7 件のコメント
Stalin Samuel
Stalin Samuel 2015 年 11 月 23 日
SUSHMA MB
SUSHMA MB 2015 年 11 月 24 日
Thank you for your help....

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOperators and Elementary Operations についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by