Error using ones Size inputs must be integers.

14 次查看(过去 30 天)
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 个评论
Guillaume
Guillaume 2018-1-5
@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.

请先登录,再进行评论。

回答(3 个)

Star Strider
Star Strider 2017-12-3
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 个评论
Star Strider
Star Strider 2018-1-5
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
Adam 2018-1-5
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
Image Analyst 2018-1-5
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.

Hector Molina
Hector Molina 2019-10-30
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.

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by