Re: [其他] 如何將變數的值儲存到陣列(新手蠢問題)已回收

看板MATLAB作者 (RL)時間14年前 (2011/10/06 13:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《dicklkk (小澄)》之銘言: : a=csvread('plsatest3.csv'); : [m n]=size(a); : for j=1:m : for i=1:m : if i~=j : x=a(j,:); : y=a(i,:) ; : cosineDistance=dot(x,y) / (norm(x)*norm(y)); : cosineDistance(isnan(cosineDistance))=0; : end : if i~=j : fprintf('cosineDistance(%d,%d):%f\n',j,i,cosineDistance); : end : end : end : 以上是程式碼,小弟希望將cosineDistance : 這個變數經過每次迴圈運算的值能夠變成一個1*n的陣列,運算過後總共會有m*(m-1)個值 : 但不希望cosineDistance這個變數最後只儲存跑完所有迴圈的一個值 : 然後希望存成這個陣列以後能夠求這個陣列的平均值 : 這個問題很愚蠢,但是我想了好久+上查詢GOOGLE真的不知道要怎麼用 : 希望大大們可以給我提示 a=[1 2; 3 4; 5 6]; % test data [m,n]=size(a); box=zeros(m); for j=1:m for i=1:m if i~=j x=a(j,:); y=a(i,:); cosineDistance=dot(x,y)/(norm(x)*norm(y)); cosineDistance(isnan(cosineDistance))=0; fprintf('cosineDistance(%d,%d):%f\n',j,i,cosineDistance); box(j,i)=cosineDistance; end end end % box is what u want ----------------------------------------------------------------------- A=[1 2; 3 4; 5 6]; [M,N]=size(A); CosDist=zeros(M); for i=1:M RepA=remap(A(i,:),M,1); Num=dot(RepA,A,2); Den=sqrt(dot(RepA,RepA,2)).*sqrt(dot(A,A,2)); Temp=Num./Den; CosDist(:,i)=Temp; end CosDist(isnan(CosDist))=NaN; CosDist(1:(M+1):end)=0; % CosDist is what u want -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.125.46.85
文章代碼(AID): #1EZJQGzG (MATLAB)
文章代碼(AID): #1EZJQGzG (MATLAB)