Info
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
Where is the problem
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Walter Roberson
il 5 Giu 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.
Risposte (1)
per isakson
il 5 Giu 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:
- the function, strcat, is made for strings only
- 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 Commenti
Walter Roberson
il 5 Giu 2012
All those sym() conversions give the impression that you are converting back and forth more often than you need to.
Questa domanda è chiusa.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!