Clustering by kmean?

Illustration
Tony Castillo - 2022-05-24T11:00:59+00:00
Question: Clustering by kmean?

Hi Everybody, I'm doing an algorithm that allow me find the typical day and/or week of solar irradiance from a spreadsheet wiht hourly irradiation values from one year.   I'm having some issues with my algorithm, this should do the following: 1-read a spreadsheet of excel 2-calculate the mean of column "f" 3-calculate the kmean 4-graph a point of the mean of colunm "f" 5-graph all the values in column "f"   The point "3" does not work, because it send me a message of error.   This is the error message than Matlab send me, Error using kmeans (line 262) X must have more rows than the number of clusters. This is very strange, so that if i click over it open another script of MATLAB, if you can note my script does not has 262 code lines.   Error in Untitled4 (line 12) idx=kmeans(8759, 52);   %Algoritmo de clusterización kmeans para determinar de un año %una semana tipica de consumo clear all close all   %carga la hoja de datos f=xlsread('IrradBilbo2.xlsx', 1, 'f4:f8763'); %calculo de promedio y=mean(f);   %clausterización por kmean idx=kmeans(8759, 52);   %graficación figure(1) grid on hold on ylabel('Potencia [Wm2]'); xlabel('meses del año'); title ('Radiación Anual');   plot(f); %grafica los 8763 valores de irradiacion del año   figure(2) grid on hold on ylabel('Potencia [Wm2]'); xlabel('meses del año'); title ('Radiación Anual'); plot(y,'*');   %grafica el promedio de los 8763 valores de irradiación del año   %escritura de valores fprintf('promedio de irradiación anual %f/n:', y); % clear all close all %carga la hoja de datos f=xlsread('IrradBilbo2.xlsx', 1, 'f4:f8763'); %calculo de promedio y=mean(f); %clausterización por kmean idx=kmeans(8759, 52); %graficación figure(1) grid on hold on ylabel('Potencia [Wm2]'); xlabel('meses del año'); title ('Radiación Anual'); plot(f); %grafica los 8763 valores de irradiacion del año figure(2) grid on hold on ylabel('Potencia [Wm2]'); xlabel('meses del año'); title ('Radiación Anual'); plot(y,'*'); %grafica el promedio de los 8763 valores de irradiacion del año %escritura de valores fprintf('promedio de irradiación anual %f/n:', y);  

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

the kmeans function.

IDX = kmeans(X,K)

The first input (X) should be an N-by-P data matrix, where N is the number of instances to cluster and P is the number of features. The second input (K) is the number of clusters you desire. The output (IDX) will be an N-by-1 vector of cluster indices for each data point.

In your script, you call

idx = kmeans(8759,52);

The first input is the problem. It is a scalar! In other words, you have only 1 data point with 1 feature. It is impossible to cluster this "data" into 52 clusters. From a very brief glance at your code, I think you may want this instead:

idx = kmeans(f,52);

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!