It looks like the variables xc and t have same size. So if you let x2 = fix(xc) instead of x2 = fix(x1). The plot should work. (I don’t know that was your intention or not)
clear
dt = 1/100000;
tstart = 0;
tend = 0.020;
t=[tstart : dt : tend];
xc=25*sin(2*pi*150*t)-15*cos(2*pi*800*t);
T = 0.00025;
n = [tstart/T : tend/T];
x1=25*sin(2*pi*150*n*T)-15*cos(2*pi*800*n*T);
% Quantize Signal
x2=fix(xc);
% Define filter coefficents
A = [1];
B = [1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16];
% Filter the quantize signal
Y = filter(B,A,x2);
figure(1);
subplot(211);
plot(t,abs(Y))
xlabel(‘Frequency (rad/sec)’)
ylabel(‘Magntidue’)
subplot(212)
plot(t,angle(Y))
xlabel(‘Frequency (rad/sec)’)
ylabel(‘Phase’)
I want to plot angles against time. Here the code:
clear all
close all
params.t0 = 0; % start time of simulation
params.tend = 10; % end time
params.m=2^8; %number of steps in each Brownian path
params.deltat=params.tend/params.m; % time increment for each Brownian path
params.R=4; % integer number to obtain EM stepsize from Brownian path stepsize
params.dt = params.R*params.deltat; %0.01; % time increment for both EM and ode45
params.D=0.001; % diffusion constant
deltat= params.tend/params.m; % time increment for each Brownian path
params.D=0.1; %diffsuion
params.R=4;
params.dt = params.R*params.deltat;
theta0=pi*rand(1);
phi0=2*pi*rand(1);
P_initial=[theta0;phi0];
[theta,phi]=difusion_SDE(params);
plot([0:params.dt:params.tend],[theta0,theta],'--*')
hold on
plot([0:params.dt:params.tend],[phi0,phi],'--*')
and the function file:
function [theta,phi]=difusion_SDE(params)
dW=sqrt(params.deltat)*randn(2,params.m);
theta0=pi*rand(1);
phi0=2*pi*rand(1);
P_initial=[ theta0; phi0];
L = params.m/ params.R;
pem=zeros(2,L);
Ang_rescale=zeros(2,L);
Ptemp=P_initial;
for j=1:L
Winc = sum(dW(:,[ params.R*(j-1)+1: params.R*j]),2);
theta=Ptemp(1);
phi=Ptemp(2);
A=[ params.D.*cot(theta);...
0];
B=[sqrt(params.D) 0 ;...
0 sqrt(params.D)./sin(theta) ];
Ptemp=Ptemp+ params.dt*A+B*Winc;
pem(1,j)=Ptemp(1);
pem(2,j)=Ptemp(2);
Ang_rescale(1,j)=mod(pem(1,j),pi);
Ang_rescale(2,j)=mod(pem(2,j),2*pi);
theta= Ang_rescale(1,j);
phi=Ang_rescale(2,j);
end
When I run the code, I got this message error
Error using plot
Vectors must be the same lengths.
I appreciate any help to solve this error
In your code, “Acceleration” and “ds_mapping”are row vectors whether “t_sec” is a column vector.
Hence, you should first convert “t_sec” into a row vector like “Acceleration”and “ds_mapping”.
Now, as your Y-axis data i.e. “Acceleration” and “ds_mapping” have 620 elements only, hence you should consider only the first 620 elements of your X-axis data i.e. “t_sec”.
A demo code is attached here to illustrate the whole plotting procedure mentioned above:
Acceleration=rand(1,620);
ds_mapping=rand(1,620);
t_sec=rand(621,1);
t_sec=t_sec’;
plot(t_sec(1:end-1),Acceleration);
hold on;
plot(t_sec(1:end-1), ds_mapping);
hold off;
newbie99 0 / 0 / 0 Регистрация: 04.06.2015 Сообщений: 7 |
||||
1 |
||||
04.06.2015, 08:51. Показов 5333. Ответов 3 Метки нет (Все метки)
были различные ошибки, но смог их исправить, но с этой встал в ступор и не могу понять как быть
Error using plot
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
04.06.2015, 08:51 |
3 |
3385 / 1908 / 571 Регистрация: 09.04.2015 Сообщений: 5,350 |
|
04.06.2015, 09:09 |
2 |
Сообщение было отмечено newbie99 как решение Решение В строке 2 переменная x, она во фрагменте не задана.
0 |
newbie99 0 / 0 / 0 Регистрация: 04.06.2015 Сообщений: 7 |
||||
04.06.2015, 09:28 [ТС] |
3 |
|||
спасибо, подтолкнули в нужную сторону, исправил и заработало Добавлено через 4 минуты
не одно, так другое т_т
0 |
3385 / 1908 / 571 Регистрация: 09.04.2015 Сообщений: 5,350 |
|
04.06.2015, 11:31 |
4 |
Разберись с параметрами fplot, что там за пустые скобки?
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
04.06.2015, 11:31 |
4 |
Доброго времени суток, уважаемые обитатели форума!
Суть проблемы состоит в том, что при попытке построения графика возникает ошибка
«Error evaluating ‘StopFcn’ callback of block_diagram ‘untitled’. Error using ==> plot
Vectors must be the same lengths.»
Задание выполняется по примеру методички (система дифференциальных уравнений указана в прикреплённом изображении). Исходную схему построила в Matlab r2008a.
После построения задаются входные параметры InitFcn:
Код: Выделить всё
%parameters and initial conditions
a=4; b=2.5; c=2; d=1; x0=3; y0=1;
И, собственно, построение графика в StopFcn:
Код: Выделить всё
figure(1)
plot(x_y.time, x_y.signals.values)
grid on
xlabel('t')
ylabel('x, y')
figure(2)
plot(x.signals.values, y.signals.values)
grid on
xlabel('x')
ylabel('y')
hold on
figure(3)
plot3(t.signals.values, x.signals.values, y.signals.values)
grid on
xlabel('t')
ylabel('x')
zlabel('y')
Подскажите, пожалуйста, что здесь не так? Может, нужно задать ещё какие-то значения в самой модели?
Исходная модель и полученная прикреплены.
С Simulink работаю в первый раз.
Прошу сильно не ругаться на нуба. Заранее спасибо.