Replication factors must be a row vector of integers or integer scalars.

15 views (last 30 days)
My coding is
depth = [0.01 1.5:1.5:30]';
w = 10 - 0.5 .* depth;
w(w<0) = 0;
a=829862;
b=21
c=a/b
W = repmat(w,c,1);
The result is replication factors must be a row vector of integers or integers scalars
Does any one can help me?

Accepted Answer

Alex Mcaulley
Alex Mcaulley on 13 Jun 2019
c must be an integer. Then, a solution:
depth = [0.01 1.5:1.5:30]';
w = 10 - 0.5 .* depth;
w(w<0) = 0;
a=829862;
b=21
c=round(a/b)
W = repmat(w,c,1);

More Answers (1)

Steven Lord
Steven Lord on 13 Jun 2019
If you want to replicate w so it has exactly a elements, I recommend doing two things. Let's operate on some very simple sample data.
w = 1:21;
While I would call your a variable something like desiredLength to make its purpose obvious, I'll use your variable name for this example. Similarly I would call b something like wLen.
a = 829862;
b = length(w);
The length function is good if you know its input is a vector. If you're not sure and need to know how many elements the input has use numel instead.
Using the ceil function ensures that b*multiplesNeeded is at least a. This means when replicatedW is created on the second line below it has at least a elements. Then the third line trims the excess elements (no more than b-1.)
multiplesNeeded = ceil(a/b);
replicatedW = repmat(w, 1, multiplesNeeded);
replicatedW(a+1:end) = [];

Tags

Community Treasure Hunt

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

Start Hunting!