How to make two vectors the same size?
18 次查看(过去 30 天)
显示 更早的评论
I wrote these codes, I splitted the dataset(colon attached) into two parts (data1 and data2) based on the last column(1 or else)and make the columns equal to each others.
clc;
clear;
close all;
tic
load colon.mat
data=colon;
[n,m]=size(data);
d=10;
l=1;
t=1;
data1=[];
data2=[];
for i=1:n
if data(i,m)==1
data1(l,:)=data(i,1:m-1);
l=l+1;
else
data2(t,:)=data(i,1:m-1);
t=t+1;
end
end
if t>l
data1(l:t-1,1:m-1)=0;
else
data2(t:l-1,1:m-1)=0;
end
for i=1: m-1
thisCol1=data1(:,i);
thisCol2=data2(:,i);
a18(i)=fKLDDist(thisCol1,thisCol2);
end
and then in for loop I computed the distance value between the data1 and data2 and for computation I defined a function fKLDDist (I attached the image of the formula)but I found the error.
function [ fkld ] = fKLDDist( p,q )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
fkld=sum(dot(p,log(p/q)));
end
the error is:
Error using dot (line 33)
A and B must be same size.
Error in fKLDDist (line 4)
fkld=sum(dot(p,log(p/q)));
Error in myFSmethod (line 56)
a18(i)=fKLDDist(thisCol1,thisCol2);
because I used dot(p,log(p/q)) in the function,matlab said A and B must be same size but I don't know how to make p and log(p/q) the same size.I'll be very gratefull to have your opinions. Thanks
0 个评论
采纳的回答
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!