Vectors must be the same lengths ошибка матлаб

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

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

были различные ошибки, но смог их исправить, но с этой встал в ступор и не могу понять как быть

Matlab M
1
2
3
 u = 1.25:0.4:3.25;
y = ((abs(x.*x-2.5)).^(1/4))+((log10(x.*x)).^(1/3));
plot(u,y);

Error using plot
Vectors must be the same length.
если разбивать функцию на части, то ошибка не пропадает, значит надо изменить формат записи функции?



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

Лучший ответ Сообщение было отмечено newbie99 как решение

Решение

В строке 2 переменная x, она во фрагменте не задана.
Усли х это u, то график строится даже с очень мелким шагом.
В точке х=0 функция имеет особую точку, т.к log10(0)= -бесконечности
А в диапазоне -1<x<1 y комплексное.
Но Вашей ошибки не получилось.



0



newbie99

0 / 0 / 0

Регистрация: 04.06.2015

Сообщений: 7

04.06.2015, 09:28

 [ТС]

3

спасибо, подтолкнули в нужную сторону, исправил и заработало

Добавлено через 4 минуты
с plot работает нормально но с fplot стал писать Too many input arguments.

Matlab M
1
2
3
4
5
6
7
>> f=@(x)((abs(x.*x-2.5)).^(1/4))+((log10(x.*x)).^(1/3));
fplot(f,[0,20],[],[],'-',1.84);
hold on
fplot(f,[0,20],[],[],'~',2.71);
fplot(f,[0,20],[],[],'::',3.81);
fplot(f,[0,20],[],[],':',4.56);
fplot(f,[0,20],[],[],'--',5.62);

не одно, так другое т_т



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--');

 легенда («необработанные данные», «после интерполяции»);

Возможно, вам также будет интересно:

  • Vcruntime140 dll ошибка файл есть
  • Vcruntime140 dll ошибка при запуске office
  • Vcruntime140 dll ошибка не исправляется
  • Vcruntime140 dll ошибка как исправить windows 7 x64
  • Vcruntime140 dll ошибка для windows 10 x64

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии