matlab如何输出字符矩阵

第一个问题:
Zb=sym('[R1 0 0 0 0 0 0 0;0 R2 0 0 0 0 0 0;
0 0 R3 0 0 0 0 0;0 0 0 (1/jwC4) 0 0 0 0;
0 0 0 0 (1/jwC5) 0 0 0;0 0 0 0 0 (1/jwC6) 0 0;
0 0 0 0 0 0 jwL7 0;0 0 0 0 0 0 0 jwL8]');
我这样输入字符矩阵错了。
Zb=sym('[R1 0 0 0 0 0 0 0;0 R2 0 0 0 0 0 0; 0 0 R3 0 0 0 0 0;0 0 0 (1/jwC4) 0 0 0 0; 0 0 0 0 (1/jwC5) 0 0 0;0 0 0 0 0 (1/jwC6) 0 0; 0 0 0 0 0 0 jwL7 0;0 0 0 0 0 0 0 jwL8]');当在matlab中把它变成一行。(这个粘贴有点问题。把它变成两行了)输出没错误。请问有没有办法让它按上面的方法输出。
第二个问题

Ib =
-(Us1 - Is7*jwL7)/R1
-(Is6 - Is7*jwC6*jwL7)/(R2*jwC6)
(Is6 - Is7*jwC6*jwL7)/(R3*jwC6)
0
Is7*jwC5*jwL7
0
0
0
我想输出这么个矩阵到txt文本中。
fprintf(fid,'求解得支路电流Ib\n');
fprintf(fid,'%s\n',Ib); 总是提示错误(我的文本创建成功了,就这个没法导入)。请问哪错了。%s不对还是别的?

第一个问题
原因是,输入字符串的时候,中间不允许换行。如果要换行写,应该拆成多个字符串:

Zb=sym(['[R1 0 0 0 0 0 0 0;0 R2 0 0 0 0 0 0;' ...
        '0 0 R3 0 0 0 0 0;0 0 0 (1/jwC4) 0 0 0 0;' ...
        '0 0 0 0 (1/jwC5) 0 0 0;0 0 0 0 0 (1/jwC6) 0 0;' ...
        '0 0 0 0 0 0 jwL7 0;0 0 0 0 0 0 0 jwL8]'])

 

第二个问题
符号类型(sym)不能直接用fprintf输出。可以转换为字符串然后再输出,但需要逐个元素进行处理,以下是参考代码:

[m,n] = size(X);
for k = 1: m*n
    lengths(k) = length(char(X(k)));
end;
len = max(lengths);
for i = 1:m
    str = '[';
    for j = 1:n
        s = char(X(i,j));
        str = [str blanks(len-length(s)+1) s ','];
    end
    str(end) = ']';
    fprintf('%s\n',str)
end

这里调用fprintf未指定文件句柄,会直接在命令窗口输出,你可以根据需要修改。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-11
输出字符矩阵
比如: a=[CH2
C=C
ACH]

则可以如下输入:

利用cell
因为本身您是形态的矩阵
字串型态之矩阵
['a' 'b'] == ['ab'] == ab (字串)
所以从行矩阵转置後
就不可能转为行矩阵了
因此才会建议您才用 cell 矩阵进行储存

a={'CH2';'C=C';'ACH'}
这样也可以任意转置
如果不想的话
就将原本矩阵
a =
a = a'
a = a(:)
a = a'
第2个回答  2015-08-17
程序如下:
[m,n]=size(p);
p1=cell(m,1);
for i=1:m
a=p(i,:);
p1{i}=['abc ' num2str(a,'%.4f, ') ' def'];
end
p=p1
第3个回答  2015-09-04
经测试,程序如下:
[m,n]=size(p);
p1=cell(m,1);
for i=1:m
a=p(i,:);
p1{i}=['abc ' num2str(a,'%.4f, ') ' def'];
end
p=p1
第4个回答  2010-01-15
dlmwrite('Result.txt',D,);
其中Result.txt是你想输出的文档的名字,D是你程序中存放数据的矩阵

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网