第一个问题:
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不对还是别的?
第一个问题
原因是,输入字符串的时候,中间不允许换行。如果要换行写,应该拆成多个字符串:
'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输出。可以转换为字符串然后再输出,但需要逐个元素进行处理,以下是参考代码:
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未指定文件句柄,会直接在命令窗口输出,你可以根据需要修改。
比如: a=[CH2
C=C
ACH]
则可以如下输入:
利用cell
因为本身您是形态的矩阵
字串型态之矩阵
['a' 'b'] == ['ab'] == ab (字串)
所以从行矩阵转置後
就不可能转为行矩阵了
因此才会建议您才用 cell 矩阵进行储存
a={'CH2';'C=C';'ACH'}
这样也可以任意转置
如果不想的话
就将原本矩阵
a =
a = a'
a = a(:)
a = a'
[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
[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
其中Result.txt是你想输出的文档的名字,D是你程序中存放数据的矩阵