MATLAB: Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-2.

unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-2.

I found some trouble with my code, somebody help me please. I really need your help, thankyou!
clc; clear all;
A=xlsread('sne7-final.xlsx','cv','A1:G64');
B=xlsread('sne7-final.xlsx','cv','A129:G640');
% Time=[A;B];
% data=Time(:,1:7);
% target=Time(:,8);
C=xlsread('sne7-final.xlsx','cv','H1:H64');
D=xlsread('sne7-final.xlsx','cv','H129:H640');
% Target=[C;D];
% contohData = xlsread('All Entropy 25 Blok');
contohData = [A;B];
% hasilContohData = xlsread('Hasil Entropy 25 Blok CV10');
hasilContohData = [C;D];
dataBaru = xlsread('sne7-final.xlsx','cv','A65:G128');
%Tentukan parameter k, yaitu banyak jumlah titik tetangga yang diperhitungkan
%Karena ada 4 data pada contoh awal, maka nilai K adalah 1 / 2 / 3 / 4
%Diasumsikan dalam kasus ini, nilai K adalah 3, brarti hanya 3 titik tetangga terdekat yang diperhitungkan dalam setiap perhitungan
k = 1;
%* Lakukan perhitungan menggunakan metode Fuzzy k-NN (k-Nearest Neighbors)
%Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 1 - 3)
[hasilData,jarakKeMasing2Hasil] = FuzzyKNN(contohData, hasilContohData, dataBaru, k);
disp('Hasil Perhitungan dengan metode Fuzzy k-NN (k-Nearest Neighbors)')
disp('Thorax , Region 1 , Region 2 , Region 3 , Jarak ke hasil abnormal , Jarak ke hasil Normal, kesimpulan')
for i = 1:size(hasilData, 1)
%4. Lakukan konversi nilai hasil kembali seperti semula
%Jika nlai hasil adalah 1, maka termasuk dalam kelompok hasil jual
%Laris (abnormal)
%Jika nlai hasil adalah 2, maka termasuk dalam kelompok hasil jual
%Tidak Laris (normal)
if hasilData(i,1) == 1
status = '1';
elseif hasilData(i,1) == 2
status = '2';
end
disp(['Thorax ' , num2str(i) , ', ', ...
num2str(dataBaru(i,1)), blanks(10 - length(num2str(dataBaru(i,1)))), ', ', ...
num2str(dataBaru(i,2)), blanks(22 - length(num2str(dataBaru(i,2)))), ', ', ...
num2str(dataBaru(i,3)), blanks(3 - length(num2str(dataBaru(i,3)))), ', ', ...
num2str(round(jarakKeMasing2Hasil(i,1),2)), blanks(25 - length(num2str(round(jarakKeMasing2Hasil(i,1),2)))), ', ', ...
num2str(round(jarakKeMasing2Hasil(i,2),2)), blanks(31 - length(num2str(round(jarakKeMasing2Hasil(i,2),2)))), ', ', ...
char(status)])
x=status;
sheet=1;
my_cell = sprintf('A%s',num2str(i));
xlswrite('Hitung Akurasi SNE 7 Blok CV1 1',x,sheet,my_cell);
end
filename4='Hitung Akurasi SNE 7 Blok CV1 1.xls'; %hasil klasifikasi
filename5=xlsread('sne7-final.xlsx','cv','H65:H128') %hasil asli dari database
predict=xlsread(filename4); %inisiasi

true=xlsread(filename5); %inisiasi
C=confusionmat(true,predict)
confusionchart(C) % buat nampilin chart true false dkk
[m,n]=find(true==predict);
akurasi=sum(n)/64*100 %rumus akurasi
this is the function
function [hasilDataBaru,jarakKeMasing2Hasil] = FuzzyKNN(contohData, hasilContohData, dataBaru, k, fuzzy)
if nargin<7
fuzzy = true;
end
jumlahContohData = size(contohData,1);
jumlahDataBaru = size(dataBaru,1);
%1. Tentukan faktor skala dalam pembobotan fuzzy
%Dalam kasus ini bernilai 2 karena hanya ada 2 nilai hasil, yaitu Laris dan Tidak Laris
m = 2;
%2. Lakukan konversi nilai hasil contoh data menjadi 2 nilai biner
%Untuk hasil jual Laris, maka akan dikonversi menjadi 1 0
%Untuk hasil jual Tidak Laris, maka akan dikonversi menjadi 0 1
maksHasilContohData = max(hasilContohData);
temp = zeros(length(hasilContohData),maksHasilContohData);
for i=1:jumlahContohData
temp(i,:) = [zeros(1, hasilContohData(i)-1) 1 zeros(1,maksHasilContohData - hasilContohData(i))];
end
hasilContohData = temp;
%Untuk menyimpan hasil jual untuk setiap data baru
hasilDataBaru = zeros(jumlahDataBaru, length(k));
%Untuk menyimpan jarak ke masing-masing hasil jual (Laris dan Tidak Laris)
jarakKeMasing2Hasil = zeros(jumlahDataBaru, maksHasilContohData, length(k));
%3. Lakukan perhitungan pada masing-masing data baru (poin 3a - 3g)
for i=1:jumlahDataBaru
%3a. Hitung jarak dari data baru pada masing-masing data contoh
%Perhitungan jarak menggunakan rumus Euclidean, yaitu akar dari (jumlah dari (kuadrat dari (dataBaru - contohData)))
%Untuk efisiensi, proses akar memang tidak dilakukan agar tidak perlu lagi mengkuadratkan pada proses selanjutnya
jarak = (repmat(dataBaru(i,:), jumlahContohData,1) - contohData).^2;
jarak = sum(jarak,2)';
%3b. Lakukan pengurutan jarak dari yang paling dekat ke jarak yang paling jauh
[~, idxTerurut] = sort(jarak);
%3c. Contoh data terpilih adalah contoh data dengan jarak yang paling minimal sebanyak parameter k
idxContohDataTerpilih = idxTerurut(1:k);
bobot = ones(1,length(idxContohDataTerpilih));
if fuzzy,
%3d. Lakukan perhitungan bobot menggunakan metode fuzzy
%Normalnya, nilai bobot dihitung dengan menggunakan rumus:
%bobot = jarak(idxContohDataTerpilih).^(-2/(m-1));
%Tetapi karena nilai jarak diatas tidak dilakukan proses akar,
%Maka nilai bobotnya dihitung dengan rumus:
%bobot = sqrt(jarak(idxContohDataTerpilih)).^(-2/(m-1));
%Dengan menghilangkan proses akar dan kuadrat yang terjadi bersamaan,
%maka bobot dapat dihitung dengan rumus:
%bobot = jarak(idxContohDataTerpilih).^(-1/(m-1));
bobot = jarak(idxContohDataTerpilih).^(-1/(m-1));
%3e. Jika terdapat nilai bobot yang mendekati tak terhingga (infinity),
%maka nilai bobot ini akan dikembalikan menjadi angka 1
if max(isinf(bobot))
warning(['Terdapat bobot dengan nilai tak terhingga: ' num2str(i) '. Sehingga nilai bobot dikembalikan menjadi 1.']);
bobot(isinf(bobot)) = 1;
end
end
%3f. Lakukan perkalian nilai bobot dengan 2 nilai biner hasil konversi dari nilai hasil pada contoh data
%Kemudian lakukan normalisasi dengan cara membagi bobot tersebut dengan semua jumlah bobot yang ada
bobotPerMasing2Hasil = bobot * hasilContohData(idxContohDataTerpilih,:) / (sum(bobot)) ;
jarakKeMasing2Hasil(i,:) = bobotPerMasing2Hasil;
%3g. Tentukan nilai bobot yang paling tinggi,
%Kemudian catat indeks bobot tersebut sebagai jawaban akhir
[~, idxMaks] = max(bobotPerMasing2Hasil');
hasilDataBaru(i) = idxMaks;
end
this is the eror
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-2.
Error in FuzzyKNN (line 19)
temp(i,:) = [zeros(1, hasilContohData(i)-1) 1 zeros(1,maksHasilContohData - hasilContohData(i))];
Error in main (line 28)
[hasilData,jarakKeMasing2Hasil] = FuzzyKNN(contohData, hasilContohData, dataBaru, k);

Best Answer

Seems you have to consider two loops, as temp is now 1 dimentional vector
Look this way, to assign both indexing (spatial position) of temp data
for i=1:jumlahContohData
for j=1:jumlahDataBaru
temp(i,j) = [zeros(1, hasilContohData(i)-1) 1 zeros(1,maksHasilContohData - hasilContohData(i))];
end
end
Please note on the length of arrays.