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

8 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) = [];

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!