Replication factors must be a row vector of integers or integer scalars.
15 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Skydriver
il 13 Giu 2019
Risposto: Steven Lord
il 13 Giu 2019
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?
0 Commenti
Risposta accettata
Alex Mcaulley
il 13 Giu 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);
2 Commenti
Più risposte (1)
Steven Lord
il 13 Giu 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) = [];
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!