Clustering by kmean?

5 views (last 30 days)
Tony Castillo
Tony Castillo on 5 Oct 2016
Commented: Tony Castillo on 5 Oct 2016
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);

Accepted Answer

Matthew Eicholtz
Matthew Eicholtz on 5 Oct 2016
See the documentation on 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);
  1 Comment
Tony Castillo
Tony Castillo on 5 Oct 2016
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.
Hi, now my code run without send a error message but the graph doesn't seems be what it should be, can you help me a little bit more?. I want to sort the data (clustering) days firstly or weeks according its irradiance.

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by