Error using ones Size inputs must be integers.
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi guys i have a problem with my code for error like on theme " Error using ones Size inputs must be integers. Error in m6 (line 6) K1 = ones(length(strings)/4,1);"
my data looks like (look on image) and my code (strings is my Data) :
K1 = ones(length(strings)/4,1);
K2 = ones(length(strings)/4,1);
K3 = ones(length(strings)/4,1);
j=1;
for i = 2:length(strings)
WK11 = corrcoef((str2double(strings(2:i,2))), (str2double(strings(2:i,4))));
if rem(i,4)==0
K1(j,1) = WK11(2,1);
j=j+1;
end
end
j=1;
for i = 2:length(strings)
WK22 = corrcoef((str2double(strings(2:i,2))), (str2double(strings(2:i,3))));
if rem(i,4)==0
K2(j,1) = WK22(2,1);
j=j+1;
end
end;
j=1;
for i = 2:length(strings)
WK33 = corrcoef((str2double(strings(2:i,3))), (str2double(strings(2:i,4))));
if rem(i,4)==0
K3(j,1) = WK33(2,1);
j=j+1;
end
end;
I dont know how to solve this
1 comentario
Guillaume
el 5 de En. de 2018
@Themiya, I've deleted your answer because a) it is not formatted properly (use the {}Code buton), b) it does not even appear to answer the OP question, and c) it is a duplicate of your comment.
Respuestas (3)
Star Strider
el 3 de Dic. de 2017
To force them to be integers, use fix, floor, ceil, or round.
Example —
K1 = ones(fix(length(strings)/4),1);
Be careful with the length, numel, and size functions, so you get the result you want.
3 comentarios
Star Strider
el 5 de En. de 2018
I certainly agree that size with a specific dimension is best. For a vector, numel works, but for a matrix will not give the desired result, and length of course returns the greatest dimension. (I should have mentioned these details originally.)
Adam
el 5 de En. de 2018
numel 'works' for a matrix too depending what the 'desired result' is. I've used it numerous times to give me the total number of elements in the array. To be fair, I only started doing this though since Matlab suggested it as an improvement on my use of prod and size!
Image Analyst
el 5 de En. de 2018
strings is a cell array that does not have row (elements) that are an integer multipl of 4 so length(strings)/4 is not an integer. Rather than round that number I think it's best to track down the root cause of this, which is why strings is not a multiple of 4 when you think it always should be.
0 comentarios
Hector Molina
el 30 de Oct. de 2019
I had a similiar problem,
as "ones" must to be integer, what I used as a solution, was the function "fix"
I can notice that you are dividing by 4 in your script, so try
ones(fix(length(strings)/4,1))
of course you will lose or gain information when apply "fix", however, it is posible your script (program) runs OK.
0 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!