How to concatenate data from two different functions in MATLAB?

1 view (last 30 days)
Part of one function has this:
%% Concatenating Time & Point to Point Angles. Time will be the first column
ConcPTP1 = [TimeP2P1,P2PAng1]; %% getting the datat from here works
Part of the other function has this:
%% Concatenating Time & Angles. Time will be the first column
ConcLin1 = [TimeLin1,AnglesLin1]; %% getting the datat from here works too
Part of the main program has this
%% Collecting all Data
Concat = [ConcPTP1',ConcLin1']'; %%% ***my problem is here*** works only if everything is in one script
This works when everything is a single script but gives errors when I seperate the files as functions then call them from a main program. (The function method is needed). Everything else works fine, I only need to combine all the data from both functions as one ouput file.
Thank you in advance.
  5 Comments
Stephen23
Stephen23 on 20 Jan 2022
Edited: Stephen23 on 20 Jan 2022
[ConcPTP1',ConcLin1']'
Three ctranpose operations seems a bit inefficient: why not just concatenate with the correct orientation in the first place?
I am guessing something like this might wrk:
[ConcPTP1;ConcLin1]
If that is not possible, replace the complex conjugate transpose with transpose.
Konard Adams
Konard Adams on 20 Jan 2022
Thank you @Stephen. Fantastic idea. I tried it and it gives the same output. Much simpler way, indeed.
Hence MATLAB community is important. Cheers!

Sign in to comment.

Accepted Answer

Konard Adams
Konard Adams on 20 Jan 2022
Edited: Konard Adams on 20 Jan 2022
How to concatenate data from two different functions in MATLAB?
Functions:
1)
% Before:
% function AnglesLin1 = Line(nx, ny, nz, sx, sy, sz, ax, ay, az,ResLin1,Xstart,Ystart,Zstart,Xend,Yend,Zend)
% correction:
function [AnglesLin1,ConcLin1] = Line(nx, ny, nz, sx, sy, sz, ax, ay, az,ResLin1,Xstart,Ystart,Zstart,Xend,Yend,Zend)
2)
% Before:
% function AnglesPTP1 = Point(X, Y, Z, nx, ny, nz, sx, sy, sz, ax, ay, az,iniPTP1,condiPTP1)
% correction:
function [AnglesPTP1,ConcPTP1] = Point(X, Y, Z, nx, ny, nz, sx, sy, sz, ax, ay, az,iniPTP1,condiPTP1)
Script:
%% Calling PTP Motion
% Before:
% PTPIKine = Point(X, Y, Z, nx, ny, nz, sx, sy, sz, ax, ay, az,iniPTP1,condiPTP1);
% correction:
[AnglesPTP1,ConcPTP1] = Point(X, Y, Z, nx, ny, nz, sx, sy, sz, ax, ay, az,iniPTP1,condiPTP1);
%% Calling Linear Motion
% Before:
% LineIKine = Line(nx, ny, nz, sx, sy, sz, ax, ay, az, ResLin1,Xstart,Ystart,Zstart,Xend,Yend,Zend);
% correction:
[AnglesLin1,ConcLin1] = Line(nx, ny, nz, sx, sy, sz, ax, ay, az, ResLin1,Xstart,Ystart,Zstart,Xend,Yend,Zend);
Now, using the line of code below works to concatenate the needed values:
%% Collecting all Data
% Before:
Concat = [ConcPTP1',ConcLin1']';
% A Simpler way is:
Concat = [ConcPTP1;ConcLin1];

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!