2011-12-06 20 views
-1

私はいくつかのコードを持っていますが、私はそれを少し微調整しようとしています。これは、ラインから1文字を読み込むためにfgetsを使用し、3Dプロットのカラーポイントに使用していました。だから、それは何を与えるためにx、y、zのポイントを割り当てるために他のデータファイルを使用してMatlabコードを理解する

a 
p 
p 
n 
c 

を読むでしょう。その結果、は本当にかわいい 3Dプロットです。

それは

0 
1 
1 
0 
2 
2 
0 

を読み込むので、私は、入力ファイルを編集していると私は色番号に同じ色をして欲しいです。

私はコードで、これまで得てきたところです:

function PlotCluster(mcStep) 

    clear all 

    filename = input('Please enter filename: ', 's'); 

    disp('Loading hopping site coordinates ...') 
    load x.dat 
    load y.dat 
    load z.dat 
    temp = z; 
    z = x; 
    x = temp; 
    n_sites = length(x); 

     disp('Loading hopping site types ...') 
    fp = fopen([filename]); 
    data = load(filename); %# Load the data 

    % Plot the devices 
    % ---------------- 

    disp('Plotting the sample surface ...') 
    figure 
    disp('Hello world!') 

    ia = data == 0; 
    in = data == 1; 
    ip = data == 2; 
    disp('Hello Again') 

    plot3(x(ia),y(ia),z(ia),'b.') %,'MarkerSize',4) 
    hold on 
    plot3(x(ic),y(ic),z(ic),'b.') %,'MarkerSize',4) 
    plot3(x(in),y(in),z(in),'g.') %,'MarkerSize',4) 
    plot3(x(ip),y(ip),z(ip),'r.') %,'MarkerSize',4) 
    daspect([1 1 1]) 
    set(gca,'Projection','Perspective') 
    set(gca,'FontSize',16) 
    axis tight 
    xlabel('z (nm)','FontSize',18) 
    ylabel('y (nm)','FontSize',18) 
    zlabel('x (nm)','FontSize',18) 
    %title(['Metropolis Monte Carlo step ' num2str(mcStep)]) 

    view([126.5 23]) 

私の問題は、私は

Index exceeds matrix dimensions. 

Error in PlotCluster (line 34) 
    plot3(x(ia),y(ia),z(ia),'b.') %,'MarkerSize',4) 

このエラーを取得していますおよびIAは行くだろう、なぜ私は見ていないですx配列の範囲外です。 fgetsloadに変更するとどうなりますか?それはそれが正しい番号を読み取る唯一の方法であった(49sと50sは非常に奇妙でした)。

私を悩ましている主なビットは、これらの行です(ここでは、 'a' 'N'、 'P' など)

ia = data == 0; 
    in = data == 1; 
    ip = data == 2; 

彼らはIaがアレイなる等dataからiaへの割当と暗黙if文のように見えます。確信はないけど。

これを理解する助けとなると大変感謝します。

+0

問題を修正しました。入力内容を正しく更新していませんでした。 この質問に答える人のためにこれをクリアするには、 'ia = data == 0'は '配列とデータのサイズを同じにし、ロジック(data == 0 )trueまたはfalse ' – Pureferret

+1

あなたの問題を解決した場合は、答えとして投稿してください。 – Mat

+0

申し訳ありませんが、これはまだ新しいです。そうするでしょう! ちょうど言われました_評判が100未満のユーザーは、質問後8時間は自分の質問に答えることができません。あなたは3時間で自己回答することができます。それまでは、コメントを使用するか、代わりに質問を編集してください。 – Pureferret

答えて

0

問題を修正しました。入力を正しく更新していませんでした。 ia = data == 0は、 '配列とデータのサイズを同じにし、ロジック(data == 0)が真であるかどうかによって1または0で埋めることを意味します。 false '

関連する問題