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;ticload 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; endendif 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); a24(i)=fkumarjohnson(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 fkumarjohnson (I attached the image of the formula)but I found the error.
function [ fkj ] = fkumarjohnson(p,q )%UNTITLED Summary of this function goes here
% Detailed explanation goes here
fkj=sum(((p*p-q*q).^2)/(2*(dot(p,q)).^(3/2)));end
the error is:
Error using * Inner matrix dimensions must agree.Error in fkumarjohnson (line 4)fkj=sum(((p*p-q*q).^2)/(2*(dot(p,q)).^(3/2)));Error in myFSmethod (line 62) a24(i)=fkumarjohnson(thisCol1,thisCol2);
The matlab said the inner matrix dimensions of two sides of * must agree but I don't know how to make their dimensions equal.I'll be very gratefull to have your opinions. Thanks
Best Answer