How to write to screen a set of variables with mixed types?
4 views (last 30 days)
Show older comments
hello,
I am trying to write to screen a set of variables with mixed types. I have the code below
and I get the following display:
d=0.7874 mm , epsr=2.1 >>
a='d=0.7874 mm , epsr=2.1';
m=3;
k=7;
u=7.853535;
fprintf('%s %i \t %10.5f \n',[a m u])
help would be appreciated.
Thank you
1 Comment
Stephen23
on 30 Dec 2024
a='d=0.7874 mm , epsr=2.1';
m=3;
u=7.853535;
fprintf('%s %i \t %10.5f \n',a,m,u)
Answers (2)
Manikanta Aditya
on 30 Dec 2024
Edited: Manikanta Aditya
on 30 Dec 2024
It looks like you're trying to print a string along with integer and floating-point variables using fprintf. The issue arises because you're trying to concatenate different types into a single array, which fprintf doesn't handle well. Instead, you should pass each variable separately to fprintf.
Here's how you can modify your code to correctly display the variables:
a = 'd=0.7874 mm , epsr=2.1';
m = 3;
k = 7;
u = 7.853535;
% Use fprintf with separate arguments for each variable
fprintf('%s %i \t %10.5f \n', a, m, u);
This will correctly print the string a, the integer m, and the floating-point number u in the desired format.
If you want to include the variable k as well, you can add it to the fprintf statement:
fprintf('%s %i \t %i \t %10.5f \n', a, m, k, u);
This way, each variable is passed as a separate argument to fprintf, ensuring they are printed correctly.
Refer to the following doc:
I hope this helps.
Walter Roberson
on 4 Jan 2025
a='d=0.7874 mm , epsr=2.1';
m=3;
u=7.853535;
temp = [a m u]
length(a)
length(temp)
temp(end-1:end), temp(end-1:end)+0
You are using [] to concatenate a character vector and numeric items. As described in https://www.mathworks.com/help/matlab/matlab_prog/valid-combinations-of-unlike-classes.html the result of concatenating a character vector and numeric items is a character vector, with each of the numeric items having first been converted to uint16() after fractions are dropped. The numeric values are not first converted to printable representations: they are treated as code-points.
So you start with your vector of length 22, and concatenate on two code points, giving a result that is a vector of length 24, the last two code points of which are 3 and 7.
Your error was in concatenating the values first, instead of using individual parameters to fprintf()
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!