Ошибка MATLAB: «Векторы должны быть одинаковой длины» - PullRequest
0 голосов
/ 01 марта 2019

Я получаю сообщение об ошибке «Векторы должны быть одинаковой длины», но я не уверен, почему.Я в основном пытаюсь построить график для кусочной функции по времени.Ранее я столкнулся с некоторыми другими проблемами с «кусочным» оператором, поэтому решил использовать вместо него оператор if.

figure(1);        

t = linspace(0, 30, 200); 

v_wind1 = linspace(0, 20, 100);      
v_wind2 = linspace(20, 0, 100);   

if (0 <= t < 15)                         
    v_wind = v_wind1;                        
elseif (15 <= t <30)                        
    v_wind = v_wind2;                     
end        

plot(t, v_wind);    

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Просто объедините v_wind1 и v_wind2.

figure(1);        

t = linspace(0, 30, 200); 

v_wind1 = linspace(0, 20, 100);      
v_wind2 = linspace(20, 0, 100);   

v_wind = [v_wind1 v_wind2];    

plot(t, v_wind); 

Это должно сработать !?Вы хотите этого результата, не так ли?

enter image description here

0 голосов
/ 01 марта 2019

Просто используйте: индексирование

t = linspace(0, 30, 200); 

v_wind1 = linspace(0, 20, 200);      
v_wind2 = linspace(20, 0, 200);   

v_wind = zeros(size(t)) ;
idx = t >= 0 & t<15 ;
v_wind(idx) = v_wind1(idx) ; 

idx = t >=15 & t < 30 ;
v_wind(idx) = v_wind2(idx) ; 

plot(t,v_wind) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...