Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

Where is the problem

1 Ansicht (letzte 30 Tage)
john
john am 4 Jun. 2012
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
Hi, I got this error:
In an assignment A(:) = B, the number of elements in A and B must be the same.
UserData.info(4,2)=num2cell(sym(strcat('u',sym(UserData.matrix{4,2}))));
UserData.info and UserData.matrix are cell type.
I don't understand, where is problem?
  1 Kommentar
Walter Roberson
Walter Roberson am 5 Jun. 2012
I don't know what it would mean to strcat a string and a symbol. Unfortunately I do not have the toolbox to test with.

Antworten (1)

per isakson
per isakson am 5 Jun. 2012
Try
UserData.info{ 4, 2 } =num2cell(sym(strcat('u',sym(UserData.matrix{4,2}))));
--- next ---
It is easier to debug and understand with one step per line:
temp1 = UserData.matrix{4,2};
temp2 = sym(temp1);
temp3 = strcat( 'u', temp2 );
temp4 = sym( temp3 );
temp5 = num2cell( temp4 );
UserData.info{ 4, 2 } = temp5;
whos temp*
.
--- next 2 ---
Is strcat supposed to concatenate a character, 'u' and something of class sym? What is this strcat-line supposed to do?
.
--- next 3 ---
Run this function and note that strcat fails when temp2 == 10. '10' is displayed on screen before the error message.
function cssm
temp1 = UserData.matrix{4,2};
for temp1 = 3 : 23
temp2 = sym(temp1);
try
temp3 = strcat( 'u', temp2 );
catch me
disp( temp2 )
rethrow( me )
end
temp4 = sym( temp3 );
temp5 = num2cell( temp4 );
UserData.info{ 4, 2 } = temp5;
end
whos temp*
end
>> cssm
10
In an assignment A(:) = B, the number of elements in A and B
must be the same.
Error in strcat (line 95)
s(pos:pos+len-1) = str;
Error in cssm (line 7)
temp3 = strcat( 'u', temp2 );
>>
The reason is that length( temp2 ) always returns 1. Thus, it works for one digit numbers, but not for 10 or 23.
My conclusions are:
  1. the function, strcat, is made for strings only
  2. all the numerical stuff in Matlab isn't tested with sym class input. At Mathworks they didn't anticipate that someone would through sym at strcat :-).
  11 Kommentare
john
john am 5 Jun. 2012
great......it works ....UserData.info{ 4, 2 } =num2cell(sym(strcat('u',char(sym(UserData.matrix{4,2})))));
big thank you ..
.
.
you help me a lot of time, how can I thank you?
Walter Roberson
Walter Roberson am 5 Jun. 2012
All those sym() conversions give the impression that you are converting back and forth more often than you need to.

Diese Frage ist geschlossen.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by