Re: [其他] 如何將變數的值儲存到陣列(新手蠢問題)已回收
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):