Insufficient number of outputs from right hand side of equal sign to satisfy assignment.

10 views (last 30 days)
I want to assign an array of numbers to a corresponding list name. Or in another word, I want each element of the left array to be assigned to a variable name on the right. The number of element in both arrays are the same.
I am new in Matlab. I dont know why I get this error. Any help would be very appriciated.
------------------------------------
CEST = [2022,10, 11, 2, 0, 0]
UTC = CEST-[0, 0, 0, 2, 0, 0]
[yyyy, mm, dd, hour, minute, second]= UTC
Error: line 3, Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
  2 Comments
Stephen23
Stephen23 on 26 Nov 2022
Edited: Stephen23 on 26 Nov 2022
It looks like you expect this line:
[yyyy, mm, dd, hour, minute, second]= UTC
to perform some kind of array "unpacking" or something like that. MATLAB does not have numeric array unpacking. With some container classes you can use a comma-separated list:
You might find it beneficial to work with DATETIME objects, rather than manipulating dates "by hand" like that.

Sign in to comment.

Accepted Answer

Voss
Voss on 26 Nov 2022
CEST = [2022,10, 11, 2, 0, 0];
UTC = CEST-[0, 0, 0, 2, 0, 0];
This is what you intend to do:
yyyy = UTC(1);
mm = UTC(2);
dd = UTC(3);
hour = UTC(4);
minute = UTC(5);
second = UTC(6);
% display the variables' values
yyyy, mm, dd, hour, minute, second
yyyy = 2022
mm = 10
dd = 11
hour = 0
minute = 0
second = 0
Or, to do the same thing in a way more like what you had in mind:
temp = num2cell(UTC);
[yyyy, mm, dd, hour, minute, second] = deal(temp{:})
yyyy = 2022
mm = 10
dd = 11
hour = 0
minute = 0
second = 0
  1 Comment
Mohammad Khan
Mohammad Khan on 27 Nov 2022
Thanks for the sugested solution. It gave me an idea and I solved my problem like this.
CEST = [2022,10, 11, 2, 0, 0];
UTC = CEST-[0, 0, 0, 2, 0, 0];
This was my function to convert Georgian Calender to Julian Calender.
function [jd,mdj] = gre2jd(yyyy,mm,dd,hour,minute,second);
Then I assigned the the above date to the entry varaible to my function like this.
[jd,mdj] = gre2jd(UTC(1),UTC(2),UTC(3),UTC(3),UTC(4),UTC(5),UTC(6));

Sign in to comment.

More Answers (0)

Categories

Find more on Just for fun in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!