2017-02-08 6 views
0

私は読んだガイドに従ってmesh2d関数を使ってみました。これは ... https://github.com/dengwirda/mesh2dmatlab mesh2d問題が見つかりません

が、イムはまだこの問題を取得何らかの理由:、私はmesh2dをインストール

Undefined function 'mesh2d' for input arguments of type 'double'. 

Error in Try1 (line 88) 
[p,t] = mesh2d(allnodes, alledges); 

こちらのガイドに従って:何らかの理由イムは、すべての時間にこの問題を取得するための 私のコード:(イムそれは悪い部分何か、代わりにILマークを欠落している場合イムに容易になりwhouldように、コードを追加すること)

clf 
file = 'pattern3'; 
    P = imread('Pattern3.png'); 
    P = P(400:3400, 400:3400); 
    P = 255 - P*6; 

P = 1-im2bw(P); 
Nmin = min(size(P)); 
P = P(1:Nmin, 1:Nmin); 
[xg, yg] = meshgrid(1:Nmin, 1:Nmin); 
P((xg - Nmin/2).^2 + (yg - Nmin/2).^2 > 0.99*0.25*Nmin^2) = 0; 
P = padarray(P, [1 1], 0); 

CC = bwconncomp(P); 

dtheta = pi/24; 
theta  = (-pi:dtheta:(pi-dtheta))'; 
nodeouter = [1.1*cos(theta) 1.1*sin(theta)]; 
Nnodes = length(nodeouter); 
nodelist = (1:Nnodes)'; 
allnodes = nodeouter; 
alledges = [nodelist , mod(nodelist, Nnodes)+1]; 

for n = 1:CC.NumObjects 
%for n = 2:2 
    newP = zeros(size(P)); 
    newP(CC.PixelIdxList{1,n}(:)) = 1; 
    newP = filter2(fspecial('average',5),newP); 
    C = contourc(newP,[0.2 0.2]); 
    C = C(:,2:end)'; 
    C2 = dpsimplify(C,1); 
    m = 1; 

    while m <= length(C2(:,1)) 
     if(C2(m,1) == 1 || C2(m,2) == 1) 
      C2(m,:) = []; 
     else 
      m = m + 1; 
     end 
    end 

    C2 = (C2 - Nmin/2)/(Nmin/2); 
    C = (C - Nmin/2)/(Nmin/2); 
    figure(1) 
    hold all 
    plot(C2(:,1), C2(:,2)) 
    axis image xy 
    drawnow 

    nodeinner = C2; 
    Nnodeshole = length(nodeinner); 
    nodelist = (1:Nnodeshole)'; 
    edgelist = [nodelist , mod(nodelist, Nnodeshole)+1]; 
    edgelist = edgelist + Nnodes; 

    allnodes = [allnodes; nodeinner]; 
    alledges = [alledges; edgelist]; 
    Nnodes  = Nnodes + Nnodeshole; 
    n 
end 

%% 

hdata.fun = @(x,y) 0.05*(1 + ((x.^2 + y.^2)/a^2)).^2; 
[p,t] = mesh2d(allnodes, alledges); %%here is the issue!!!!!!!!!!!!!!!!!!!!!!!1 

%% 
as = 0.5; 

for n = 1:length(as) 
a = as(n); 
h = 0; 

x = p(:,1); 
y = p(:,2); 
z = zeros(size(x)); 
r = sqrt(x.^2 + y.^2); 
phi = atan2(y,x); 
theta = atan(r/(a+h)); 
alpha = 2*theta; 

xnew = a*sin(alpha).*cos(phi); 
ynew = a*sin(alpha).*sin(phi); 
znew = -a*cos(alpha); 

p2 = [xnew, ynew, znew]; 
stlwrite('Test.stl', t, p2) 

fv.faces = t; 
fv.vertices = p2; 
clf 
figure(3) 
patch(fv, 'FaceColor', [1 1 1], 'EdgeColor', 'black', 'LineWidth', 0.1) 
axis equal 
axis off 
xlim([-a a]) 
ylim([-a a]) 
zlim([-a a]) 
camlight head 
view(58,28) 
zoom(1.5) 
drawnow 
end 

使用しようとしている写真のイム: enter image description here

+0

機能はあなたのパスにありますか?新しいセッションで 'which mesh2d'と打ち込み、Matlabがそれを知っているかどうか確認してください。 – EBH

+0

また、 'mesh2d'はこのパッケージを使う方法ですか?私はそれの中にこの名前を持つ関数を見つけることができません。 – EBH

答えて

2

最近、私は最近MESH2Dを完全に書き直しました。最新のメッシング技術とMATLAB機能を最新にしました。古いバージョンのライブラリのサブルーチンを使用しようとしているようです。

アップデートに基づいて、必要なルーチンはrefine2smooth2(2次元の制約付きDelaunay三角形分割を構築して最適化します)です。

更新されたMESH2Dツールボックスがどのように機能するかを確認するには、tridemoに含まれているサンプルコードを参照することをお勧めします。

+0

私はその方法でそれを修正することができません、あなたは私を助けてくれますか?私は何かが間違っている可能性があります...ありがとう – secret

+0

@secret:確かに。 'mesh2d'への呼び出しを' refine2'に置き換えるようにしてください。上に投稿したコードは不完全です - パターン3の.png画像は利用できません - あなたのためにこれを確認することはできません。 –

+0

Engwirdeさん、まだ問題があり、写真を追加しました。 – secret

関連する問題