Adding 2 different length array
129 views (last 30 days)
Show older comments
I have problem in adding 2 different length array e.g x=[1 2 3 4 5 6 ]', Y =[ 3 5 7 8 ]' Ans= 4 7 10 13 6 but I do not know how to get this answer ? in my code I have tried
dir_list=dir('v1_ch.txt');
vec1=[];
for j=1:12
data=dlmread(dir_list((j-1)*13+k).name,';',3 );
latitude=data(:,1);
longitude=data(:,2);
ch4=data(:,3);
vec1=vec1+ch4; % here I tried to add array together
end
but it does not work ?
1 Comment
Jan
on 23 Oct 2011
Please edit your question and use the standard code formatting as explained in the "Markup help" link.
Accepted Answer
the cyclist
on 23 Oct 2011
Arrays have to be the same size (or one has to be a scalar) to add them, otherwise it is ambiguous to MATLAB what should be done with the "leftover" elements.
In your case, you want to pad a zero onto the end of Y, so the addition could be done like this:
x = [1 2 3 4 5 6]';
y = [3 5 7 8]';
A = x + [y;zeros(2,1)];
This will result in A = [4 7 10 12 5 6]'. (This is not exactly what you wrote as your answer, but I am guessing it is what you meant.)
If you don't know ahead of time how many zeros you need to pad at the end, then you can use the size() or length() command to determine the array dimensions, to calculate how many zeros you need.
Finally, you might want to read the "Getting Started" guide. The basics of vector manipulation are covered there.
More Answers (1)
Azmat Ameen
on 17 Dec 2020
Edited: Azmat Ameen
on 17 Dec 2020
function[t,x]=padding(t1,t2,x1,x2)
t=min(min(t1),min(t2)):max(max(t1),max(t2));
y1=zeros(1,length(t));
y2=y1;
y1((t>=min(t1))&(t<=max(t1)))=x1;
y2((t>=min(t2))&(t<=max(t2)))=x2;
x=(y1+y2)
stem(t,x)
end
Use this function to pad zeros and you will get the addition of two different array with different length.
0 Comments
See Also
Categories
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!