how to solve this error ? Error using horzcat Dimensions of matrices being concatenated are not consistent.
25 views (last 30 days)
Show older comments
Khoirunnisya Zawawi
on 20 Oct 2016
Commented: Walter Roberson
on 25 Jun 2018
I found a code about implementation of genetic algorithm in TSP. it's running but suddenly this error appears :
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
Error in elitism (line 15)
chrom = [fitness oldchrom;fitness2 newchrom];
i look for information about horzcat, it means that the array that i wanna combine dont have the same length?
can someone show me how to handle and solve this error. thank you so much!
this is code in elitism.m
% -------------------------------------------------------------------------
% Procedure of Elitism
% -------------------------------------------------------------------------
function chrom = elitism (fitness, newchrom, oldchrom, matrix_cost, nind, endNode, link_matrix)
% function name : elitism
% function input : 1. The fitness of old chromosomes
% 2. The new chromosomes
% 3. The previous / old chromosomes
% 4. The costs
% 5. The number of population
% 6. The destination node
% 7. The adjacency matrix of relationship between nodes
% function output : The chromosomes for the new generation
fitness2 = fitnessV(totalCost(newchrom,matrix_cost,nind,endNode,link_matrix));
chrom = [fitness oldchrom;fitness2 newchrom];
temp = sortrows(chrom);
chrom = temp((size(temp,1)-nind+1):size(temp,1),2:size(temp,2));
end
2 Comments
Chaya N
on 20 Oct 2016
What are the dimensions of your fitness, oldchrom, fitness2 and newchrom variables?
Could you post some sample data?
Accepted Answer
KSSV
on 20 Oct 2016
You are trying to merge matrices of different order in
chrom = [fitness oldchrom;fitness2 newchrom];
You have to check the dimensions of those matrices.
5 Comments
Walter Roberson
on 22 Oct 2016
At the command line, give the command
dbstop if error
now run the program. When it stops with the error, you can look at size() of the various objects.
More Answers (2)
Chaya N
on 23 Oct 2016
Edited: Chaya N
on 23 Oct 2016
Hello Khoirunnisya, could you please run the following code exactly as it is here and paste the output from your command window?
% -------------------------------------------------------------------------
% Procedure of Elitism
% -------------------------------------------------------------------------
function chrom = elitism (fitness, newchrom, oldchrom, matrix_cost, nind, endNode, link_matrix)
% function name : elitism
% function input : 1. The fitness of old chromosomes
% 2. The new chromosomes
% 3. The previous / old chromosomes
% 4. The costs
% 5. The number of population
% 6. The destination node
% 7. The adjacency matrix of relationship between nodes
% function output : The chromosomes for the new generation
fitness
newchrom
oldchrom
fitness2 = fitnessV(totalCost(newchrom,matrix_cost,nind,endNode,link_matrix))
% chrom = [fitness oldchrom;fitness2 newchrom];
% temp = sortrows(chrom);
% chrom = temp((size(temp,1)-nind+1):size(temp,1),2:size(temp,2));
chrom = 2;
end
Your command window should display the values of the variables fitness, newchrom, oldchrom and fitness2. Do not worry about the outputs from this function yet, I just want an idea about some of your inputs.
4 Comments
Chaya N
on 26 Oct 2016
Edited: Chaya N
on 26 Oct 2016
That error doesn't make sense. There are no structures being passed as input into totalCost.
The input 'routes' seems to be your array newchrom, which according to your previously provided information, is a 20x10 array.
Please clear out your workspace, re-load all necessary variables and run elitism.m again.
Walter Roberson
on 24 Oct 2016
Change
chrom = [fitness oldchrom;fitness2 newchrom];
to
chrom = [repmat(fitness, size(oldchrom,1), 1), oldchrom; repmat(fitness2, size(newchrom,1), 1), newchrom];
4 Comments
Amrita Rana
on 21 Jun 2018
Error using vertcat Dimensions of matrices being concatenated are not consistent.
Error in Open_dat (line 89) left = find(diff([0; poss_reg])==1);
Can anybody help me ? i am having this error while implementing ecg signal.
Walter Roberson
on 25 Jun 2018
That code does not appear anywhere in this Question, so we have to guess about the sizes.
We can guess that your poss_reg is a row vector when the code expects it to be a column vector.
Chances are there are better was of doing whatever test you are implementing.
See Also
Categories
Find more on Genetic Algorithm in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!