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. Показов 5228. Ответов 3 Метки нет (Все метки)
были различные ошибки, но смог их исправить, но с этой встал в ступор и не могу понять как быть
Error using plot
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
04.06.2015, 08:51 |
3 |
3374 / 1898 / 570 Регистрация: 09.04.2015 Сообщений: 5,321 |
|
04.06.2015, 09:09 |
2 |
Решение В строке 2 переменная x, она во фрагменте не задана.
0 |
newbie99 0 / 0 / 0 Регистрация: 04.06.2015 Сообщений: 7 |
||||
04.06.2015, 09:28 [ТС] |
3 |
|||
спасибо, подтолкнули в нужную сторону, исправил и заработало Добавлено через 4 минуты
не одно, так другое т_т
0 |
3374 / 1898 / 570 Регистрация: 09.04.2015 Сообщений: 5,321 |
|
04.06.2015, 11:31 |
4 |
Разберись с параметрами fplot, что там за пустые скобки?
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
04.06.2015, 11:31 |
4 |
Основная причина в том, что длины чертежа по x и y не совпадают. Я использую пример для иллюстрации.
Код проблемы:
clear all;close all;clc;
x = 0 : 1: 9;
y = sin(x);
n = 2*length(x);
yi = interpft(y, n);
xi = 0 : 0.5 : 10;
hold on ;
plot(x, y ,'ro');
plot(xi, yi, 'b.-');
plot(x, sin(x),'m--');
легенда («необработанные данные», «после интерполяции»);
Шаг 1: Рассчитать длину всех векторов
Код исправлен следующим образом:
clear all;close all;clc;
x = 0 : 1: 9;
y = sin(x);
n = 2*length(x);
a1=n
yi = interpft(y, n);
a2=n
xi = 0 : 0.5 : 10;
a3 =length(xi)
Как видно из результата, a3 = 21, здесь возникает проблема, поэтому отрегулируйте значение xi так, чтобы a3 = 20.
Шаг 2: Измените длину соответствующего вектора, чтобы сделать его равным
clear all;close all;clc;
x = 0 : 1: 9;
y = sin(x);
n = 2*length(x);
a1=n
yi = interpft(y, n);
a2=n
xi = 0 : 0.5 : 9.5;
a3 =length(xi)
hold on ;
plot(x, y ,'ro');
plot(xi, yi, 'b.-');
plot(x, sin(x),'m--');
легенда («необработанные данные», «после интерполяции»);
Шаг 3: Удалить добавленный код для расчета длины вектора наблюдения.
clear all;close all;clc;
x = 0 : 1: 9;
y = sin(x);
n = 2*length(x);
yi = interpft(y, n);
xi = 0 : 0.5 : 9.5;
hold on ;
plot(x, y ,'ro');
plot(xi, yi, 'b.-');
plot(x, sin(x),'m--');
легенда («необработанные данные», «после интерполяции»);