make vectors same length using min function
    2 次查看(过去 30 天)
  
       显示 更早的评论
    
dear community let me ask your support.
my data: 
x = [2008,  2009,    2010,   2011,   2012,  2013,  2014,  2015,  2016];
y = [0,  0.05,   0.1,   0.15,  0.2];
a = [2008,  2009,    2010,   2011,   2012,  2013,  2014,  2015,  2016, 2017,2018,2019];
b = [0,  0.05,   0.1,   0.15,  0.2, 0.4];
I'm trying to make x & a vector lenght same as y & b vector length so Im using min fucntion
           minlen = min(length(y), length(x)); 
           minlen = min(length(b), length(a)); 
I'm trying to get x & a  vector updated instead of getting this ans
       x(1:minlen);   

how can I make x & a  equal to ans respectively? like this:
x = [2008,  2009,    2010,   2011,   2012];
a = [2008,  2009,    2010,   2011,   2012, 2013];
any feedback will be highly appreciated
0 个评论
采纳的回答
  Image Analyst
      
      
 2024-6-17
        How about
x = [2008,  2009,    2010,   2011,   2012,  2013,  2014,  2015,  2016];
y = [0,  0.05,   0.1,   0.15,  0.2];
a = [2008,  2009,    2010,   2011,   2012,  2013,  2014,  2015,  2016, 2017,2018,2019];
b = [0,  0.05,   0.1,   0.15,  0.2, 0.4];
x = x(1 : length(y))
a = a(1 : length(b))
4 个评论
  Image Analyst
      
      
 2024-6-17
				Yeah, I don't know the whole situation and just did what was asked for.  It's possible that it might not work for other situations (such as y being shorter than x) and this is certainly not a robust solution for all possible caes.  Originally I thought of using linspace to go from the min x to the max x 
x = linspace(min(x), max(x), numel(y))
but then I saw he wanted it truncated instead of interpolated/rescaled, so then I just went with indexing to basically crop the x.
更多回答(1 个)
  Steven Lord
    
      
 2024-6-17
        x = [2008,  2009,    2010,   2011,   2012,  2013,  2014,  2015,  2016];
y = [0,  0.05,   0.1,   0.15,  0.2];
a = [2008,  2009,    2010,   2011,   2012,  2013,  2014,  2015,  2016, 2017,2018,2019];
b = [0,  0.05,   0.1,   0.15,  0.2, 0.4];
minlen = min(length(y), length(x)); 
You could use indexing and assignment:
xbackup = x; % for use in the next block of code
x = x(1:minlen) % Note the added "x = " to assign the indexing result back to x
x = xbackup % restoring the original x since the previous line overwrote it
x = trimdata(x, minlen)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Calendar 的更多信息
			
	产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



