【发布时间】:2017-06-29 15:23:32
【问题描述】:
我正在尝试编写一个可以将任何类型的此类输入打印到文本文件的例程。
如何区分单字符串、字符串元胞数组、字符串向量和字符串矩阵?
即我要区分,
'My name is X'{'My', 'name', 'is', 'X'}['My', 'name', 'is', 'X']['My', 'name' ; 'is', 'X']
我编写了以下例程。但是,它没有按预期工作。例如,
string_list = ['my', ' ', 'name', 'is', ' ', 'xyz!'];
write_string('write_string.txt', string_list);
或者,
string_list = 'my name is xyz!';
write_string('write_string.txt', string_list);
输出
m y n a m e i s x y z !
源代码
function write_string(file_name, string_list)
mode = 'a';
fid = fopen(file_name, mode);
d = size(string_list);
l = length(d);
% vector or cell-array
if(l==2)
N = length(string_list);
% a cell array of strings
if(iscell(string_list))
display('Cell array');
for k=1:N
fprintf(fid, '%s\t', string_list{k});
end
fprintf(fid, '\n');
% a vector of strings
elseif(isvector(string_list))
display('Vector');
for k=1:N
fprintf(fid, '%s\t', string_list(k));
end
fprintf(fid, '\n');
% a single string
else
display('single string');
fprintf(fid, '%s\t', string_list);
fprintf(fid, '\n');
end
% A matrix of strings
elseif(l==3)
% TODO
fprintf(fid, '\n');
end
fclose(fid);
end
【问题讨论】:
-
not working是什么意思?它是否出错,如果有,错误是什么?它是否没有给出预期的输出,是这样的,你期望什么,你得到什么?请注意,您的第三个示例与单个字符串“MynameisX”没有什么不同,而您的第四个示例是无效的 MATLAB 语法,因为矩阵中的所有行必须具有相同的列数。 -
我不明白你在问什么。目标是尝试确定输入参数的类型,还是将一些字符串写入文件?您的示例中所需的输出是什么?您的代码在此实例中检测到的类型是什么?
-
@beaker,我正在尝试编写一个可以将任何类型的输入打印到文本文件的例程。
-
... 其中哪一部分似乎无法正常工作?您是否单独尝试过每个
if/else子句中的代码,看看它们是否给您想要的结果?您的条件是否适用于您的测试变量?