Matlab中如何将单引号文本与变量字符串拼接并用于保存操作?
解决Matlab中字符串拼接与文件保存格式参数的问题
嘿,Matej,我来帮你搞定这个Matlab里字符串拼接和文件保存格式的问题。先看你原代码里的几个小问题,咱们一步步修正:
原代码的问题点
- Matlab里字符串拼接不能用
+号——这是用来做数值加法的,字符数组得用专门的拼接方式。 textscan(format,'%s')完全没必要,拼接好的格式字符串直接就能用,不用多此一举解析。- 可以把拼接好的格式直接传给
uiputfile,让文件选择框只显示对应格式的文件,用户操作起来更顺手。
修正后的完整代码
% 弹出对话框让用户选择保存格式 odpoved = questdlg('V akom formáte chcete súbor uložiť?', ... 'Uložiť vo formáte', ... 'png','jpg','bmp','bmp'); % 正确拼接格式字符串:用方括号做字符数组拼接,这里其实不需要*,imwrite认后缀名就行 format = ['.' odpoved]; % 把格式作为过滤器传入uiputfile,限制只能选对应格式的文件(也可以保留*.*让用户选所有) filter_spec = ['*.' odpoved; '*.*']; [FileName, PathName] = uiputfile(filter_spec, 'Save As'); % 检查用户有没有点取消 if ~isequal(FileName, 0) full_file_name = fullfile(PathName, FileName); % 直接用odpoved或者format作为imwrite的格式参数都可以,Matlab都能识别 imwrite(edit_obrazok, full_file_name, odpoved); end
关键细节说明
- 字符串拼接: Matlab里字符数组最直接的拼接方式就是用方括号
[],比如['.' odpoved]会生成.png这种格式的字符串;如果一定要加*,用strcat('*.', odpoved)也能得到*.png,但imwrite不需要前面的*,只需要后缀名(比如'png')或者带点的后缀(比如'.png')就够了。 - uiputfile过滤器: 传入
['*.' odpoved]可以让文件选择对话框只显示对应格式的文件,避免用户选错格式,体验更好。 - imwrite的格式参数: 第三个参数直接传格式名称(比如
'png')就可以,Matlab会自动匹配,不需要额外的解析操作。
内容的提问来源于stack exchange,提问作者Matej
相关产品推荐
相关产品推荐

