有没有办法在没有结束换行的情况下从MATLAB程序输出/显示信息?
我的MATLAB程序偶尔会输出一个数字.在输出数字之间,程序会执行许多其他操作.这是一个主要用于表示某种进展的构造,每次都不能有换行,只是为了让它对用户更具可读性.这大约是我正在寻找的:
Current random seed:
4 7 1 1
Run Code Online (Sandbox Code Playgroud)
如果程序仍然像以前一样做,那么程序的下一个输出将在同一行上.
我已经阅读了有关disp,sprintf和格式的文档,但还没有找到我正在寻找的内容.这并不意味着它不存在.;)
我可以通过按Tab键在MATLAB命令提示符下使用自动字完成,但是在使用m文件的编辑器时我不能这样做.有没有办法在编辑器中使用制表符完成?
是的,我的意思是说80位.这不是一个错字......
我对浮点变量的经验总是涉及4字节的倍数,如单音(32位),双音(64位)和长双音(我已经看到它被称为96位或128位).这就是为什么当我遇到一些代码来读取和写入AIFF(音频交换文件格式)文件时遇到80位扩展精度数据类型时我有点困惑:选择了一个扩展精度变量来存储采样音轨的速率.
当我浏览维基百科时,我发现上面的链接以及IEEE 754-1985标准摘要中的80位格式的简要提及(但不在IEEE 754-2008标准摘要中).看来,在某些架构上,"扩展"和"长双"是同义词.
我没有遇到的一件事是使用扩展精度数据类型的特定应用程序(当然,AIFF文件采样率除外).这让我想知道:
在MATLAB中调试时,我使用匿名函数进行诊断打印.例如,
debug_disp = @(str) disp(str);
debug_disp('Something is up.')
...
debug_disp = @(str) disp([]);
% diagnostics are now hidden
Run Code Online (Sandbox Code Playgroud)
使用disp([])"狼吞虎咽"似乎对我来说有点脏; 有更好的选择吗?明显的(?)方法不起作用:
debug_disp = @(str) ;
Run Code Online (Sandbox Code Playgroud)
我认为这可以用于其他功能语言应用程序,而不仅仅是诊断打印.
我有一个列矢量我想转换为单元格数组,如:
A = rand(10,1);
B = cell(10,1);
for i=1:10
B{i} = A(i);
end
B =
[0.6221]
[0.3510]
[0.5132]
[0.4018]
[0.0760]
[0.2399]
[0.1233]
[0.1839]
[0.2400]
[0.4173]
Run Code Online (Sandbox Code Playgroud)
如果没有明确的for循环,我怎么能这样做呢?我试过了:
B{:} = A(:)
Run Code Online (Sandbox Code Playgroud)
和
[B{:}] = deal(A)
Run Code Online (Sandbox Code Playgroud)
没有运气......
如果可能的话,我怎么能对矩阵做同样的事情,即单元格中的每个元素本身?
Octave有没有办法只计算和存储矩阵乘积的对角线?
基本上喜欢这样做: vector = diag(A*B);
我不关心A*B除了对角线上的任何值.矩阵大小是围绕80k x 12和12 x 80k,所以即使我不关心速度/额外的内存它只是惯于适合在RAM中.
奇怪的是,因为Octave是一个包含大量数据集和对角线的包非常重要,所以它应该是可能的.
我正在为MATLAB/Octave中的一些VHDL代码开发一个验证工具.因此,我需要生成"真正"溢出的数据类型:
intmax('int32') + 1
ans = -2147483648
Run Code Online (Sandbox Code Playgroud)
稍后,如果我可以定义变量的位宽,那将会很有帮助,但现在这不是那么重要.
当我构建一个类似C的例子时,变量增加直到它小于零,它会永远旋转:
test = int32(2^30);
while (test > 0)
test = test + int32(1);
end
Run Code Online (Sandbox Code Playgroud)
我尝试的另一种方法是自定义"溢出" - 例程,每次更改数字后都会调用它.这种方法非常缓慢,不实用,根本不适用于所有情况.有什么建议?
如果已知起点和终点坐标,在MATLAB中在黑白(二进制)图像上绘制线条的最佳方法是什么?
请注意,我不是要添加注释行.我希望这条线成为图像的一部分.
我有一个2D二进制矩阵,我想显示为黑白图.例如,假设我有一个4乘4的矩阵,如下所示:
1 1 0 1
0 0 1 0
1 1 0 1
1 0 0 0
Run Code Online (Sandbox Code Playgroud)
如何将其绘制为黑白矩阵?我的一些输入二进制矩阵的大小为100乘9,所以理想情况下我需要一个可以推广到不同大小矩阵的解决方案.
我有精确损失的问题.我使用以下代码将CSV文件中的一组值导入MATLAB 7:
function importfile(fileToRead1)
%#IMPORTFILE(FILETOREAD1)
%# Imports data from the specified file
%# FILETOREAD1: file to read
DELIMITER = ',';
HEADERLINES = 0;
%# Import the file
rawData1 = importdata(fileToRead1, DELIMITER, HEADERLINES);
%# For some simple files (such as a CSV or JPEG files), IMPORTDATA might
%# return a simple array. If so, generate a structure so that the output
%# matches that from the Import Wizard.
[~,name] = fileparts(fileToRead1);
newData1.(genvarname(name)) = rawData1;
%# Create new variables in the base …Run Code Online (Sandbox Code Playgroud)