passing a 3d matrix to a function

hi............. can anyone help how pass a 3d array/matrix to a function i have the input to the function is papro which is 2x32x2 , type is double, i need to pass m x n x p matrix. i am using ccdf as my function to plot the graph. i am getting the error message as Undefined function 'colon' for input arguments of type 'double' and attributes 'full 3d real'.
Error in ccdf (line 21)
range=min(x):step:max(x);
Error in mimo_pts (line 98)
[cy,cx]=ccdf(papro,0.1);

 Respuesta aceptada

Geoff Hayes
Geoff Hayes el 9 de Feb. de 2018
Abdul - first, you didn't have to delete your previous question and repost. Just edit the existing one.
As for ccdf, are you using this https://www.mathworks.com/matlabcentral/fileexchange/33029-complementary-cumulative-distibution-function) from the File Exchange? I suspect that you are given that I observe the same error with some random input data. The problem is with the line
range=min(x):step:max(x);
in that min and max are returning multi-dimensional arrays rather than the presumably expected scalar values (see min for details on why it is behaving as it does). If you want the minimum or maximum across all elements in x, just replace the above line with
range=min(x(:)):step:max(x(:));
While this will prevent the error from occurring, I can't guarantee that it will provide you with the correct result.

5 comentarios

ABDUL
ABDUL el 10 de Feb. de 2018
@geoff- thanks a lot for helping me in the code.
ABDUL
ABDUL el 10 de Feb. de 2018
@ geoff-can you help in debugging my other code which i have posted in web site
ABDUL
ABDUL el 10 de Feb. de 2018
@geoff- this is my sample code can you help me in this code
my input data is
ofdm_symbol=randn(8,10,2)+(1j*randn(8,10,2))
i have to access the of the input part by part and do zero padding for the input data i am using this data in for loop
ii=2
time_domain_signal(:,:,ii)=abs(ifft([ofdm_symbol(:,1:4,ii) zeros(N,(L-1)*N,ii) ofdm_symbol(:,5:8,ii)]));
i am able access the elemnts of the 1st page but not able to access and assign them to the output. i am getting the error as
"Subscripted assignment dimension mismatch".
size(ofdm_symbol(:,1:4,ii))= 8x4 ;size(ofdm_symbol(:,5:8,ii)])=8x4 ,size(zeros(N,(L-1)*N,ii))=8x4
if i am using the parse of the code.
if i modify the code as
time_domain_signal=abs(ifft([ofdm_symbol(:,1:4,ii) zeros(N,(L-1)*N,ii) ofdm_symbol(:,5:8,ii)]));
my dimensions are
size(ofdm_symbol(:,1:4,ii))= 8x4 ;size(ofdm_symbol(:,5:8,ii)])=8x4 ,size(zeros(N,(L-1)*N,ii))=8x4x2
can any one help in obtaining the proper dimensions and accessing the elements page wise of multidimensional matrix
Walter Roberson
Walter Roberson el 10 de Feb. de 2018
As I have posted several times now, your zeros(N,(L-1)*N,ii) needs to be zeros(N,(L-1)*N,length(ii))
ABDUL
ABDUL el 12 de Feb. de 2018
@Walter- i have tried executing the code by giving length(ii) , it is executing the code for page 1 of multidimensional array but the code is not getting executed for the page 2 of multidimensional array. as i have posted the code in my previous question . i am trying to execute the code page by page and access the elements page by page.

Iniciar sesión para comentar.

Más respuestas (1)

Preguntada:

el 9 de Feb. de 2018

Comentada:

el 12 de Feb. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by