How to write to screen a set of variables with mixed types?
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
Manikanta Aditya
2024-12-30
编辑:Manikanta Aditya
2024-12-30
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
2025-1-4
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!