the code shows the error "the size input must be scalar" .
Show older comments
the code shows the error that the size input must be scalar ., not able to figure out the error.
i=1:100;
n=(0:0.1:30);
a_i=unifrnd(30,90); %% uniformly distributed random number between 30 to 90
w_i=2*pi/600+(2*pi/400-2*pi/600).*rand(n,1); %% uniformly distributed random number with values between 2pi/600 to 2pi/400
theta_i=pi/8+(pi/3-pi/8).*rand(n,1); %% uniformly distributed random number between pi/8 to pi/3
x_i(n)=a_i.*sin(w_i.*n+theta_i)+80;
Answers (1)
You're calling rand() with non-integer vector arguments. The arguments to rand() are the array geometry. With this syntax, the inputs need to be scalar positive integers. It's possible to call rand() with a vector input (e.g. rand([2 2])), but that's not what you're trying to do here.
i = 1:100; % idk what this is for
n = 0:0.1:30;
a_i = unifrnd(30,90);
w_i = 2*pi/600+(2*pi/400-2*pi/600).*rand(numel(n),1); % is that what you meant?
theta_i = pi/8+(pi/3-pi/8).*rand(numel(n),1);
x_i = a_i.*sin(w_i.*n+theta_i)+80; % can't use non-integers as indices
Due to the vector orientation, x_i is 301x301. If you intended for the output to be a vector, you'll have to do one of two things:
% it's unclear if the vector orientation is intended here
% otherwise, transpose n or the specify the correct dimensions when calling rand()
% x_i = a_i.*sin(w_i.*n.' + theta_i)+80; % n transposed
2 Comments
Gargi savaliya
on 29 Sep 2021
DGM
on 29 Sep 2021
Yes, but how is x a function of i? Nothing in this description is a function of i.
Categories
Find more on Random Number Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!