如果我尝试使用对数轴绘制多个绘图,则禁用对数刻度.如果我删除了hold on日志刻度已启用,但我只能绘制单个绘图.
figure(1); clf
x = linspace(0,1,100);
y = exp(-x);
hold on;
semilogy(x, y);
semilogy(x, 2*y);
hold off;
Run Code Online (Sandbox Code Playgroud)
为什么?,如何创建多个对数比例图?
我正在尝试计算列向量的f(i) * x(i) * x(i)'
位置的总和x(i),x(i)'是转置,并且f(i)是标量.所以它是外部产品的加权总和.
在MATLAB中,通过使用可以非常快速地实现bsxfun.以下代码在我的笔记本电脑上运行260毫秒(MacBook Air 2010)
N = 1e5;
d = 100;
f = randn(N, 1);
x = randn(N, d);
% H = zeros(d, d);
tic;
H = x' * bsxfun(@times, f, x);
toc
Run Code Online (Sandbox Code Playgroud)
我一直在努力让朱莉娅做同样的工作,但我不能更快地完成它.
N = int(1e5);
d = 100;
f = randn(N);
x = randn(N, d);
function hess1(x, f)
N, d = size(x);
temp = zeros(N, d);
@simd for kk = 1:N
@inbounds temp[kk, …Run Code Online (Sandbox Code Playgroud) 给定数N并生成具有1的差值的算术级数,以便在求和有限元之后给出数字N,例如:
For Example:
N=10
1 + 2 + 3 + 4 =10
N=20
2+3+4+5+6 = 20
N=30
4+5+6+7+8 = 30
Run Code Online (Sandbox Code Playgroud)
N <1000000
好像都inf和Inf在MATLAB(也完全相同nan和NaN,但不会Nan).有什么区别吗?
>> which inf
built-in (/Applications/MATLAB_R2011b.app/toolbox/matlab/elmat/inf)
>> which Inf
built-in (/Applications/MATLAB_R2011b.app/toolbox/matlab/elmat/Inf)
Run Code Online (Sandbox Code Playgroud)
如果它们是相同的,应该在实践中使用哪一个?为了分配数组,我一直在使用x = inf(3,5)样式跟随zeros并且ones都是小型的.为了分配单个值,我使用x = Inf.你认为这是一贯的使用吗?
我被 MATLAB 中的分段错误难住了。它似乎是由从 mat 文件加载的匿名函数引起的。最初的匿名函数句柄是:
@(x)scaledNlfun(x,@logexp1,1e3)
Run Code Online (Sandbox Code Playgroud)
但是当它加载时,它变成了:
@sf%1@(x)scaledNlfun(x,@logexp1,1e3)
Run Code Online (Sandbox Code Playgroud)
似乎没问题,当我在命令行中调用它时,但它会在函数中创建分段错误(或分段违规)。不是函数调用本身,而是之后的几行。在调试模式下,如果我单步执行语句,也没有问题。
堆栈跟踪显示一堆
[ 0] 0x00002b20b97baba4 /usr/local/MATLAB/R2013a/bin/glnxa64/libmwm_interpreter.so+04127652
Run Code Online (Sandbox Code Playgroud)
它发生在 Linux 2.6.18-371.3.1.el5 SMP 上的 MATLAB 2012a 和 2013a 上。
此函数句柄使用“-v7.3”选项保存在parfor循环中,因为包含句柄的结构太大。如果我在加载 mat 文件后替换匿名函数,一切正常,所以我认为 matlabload函数有一个错误。
不幸的是,我无法创建一个最小的示例来重现错误。我尝试使用“-v7.3”在 parfor 中保存匿名函数句柄,但没有其他复杂的数据结构,它似乎工作正常。但是我有 80 个 mat 文件,它们会可靠地使 matlab 崩溃(其中许多超过 1GB)。
无论如何,有人知道“@sf%”是什么意思吗?(这不是 stateflow 工具箱)
我想替换结构数组中的字段的值.例如,我想在以下结构中将所有1替换为3.
a(1).b = 1;
a(2).b = 2;
a(3).b = 1;
a([a.b] == 1).b = 3; % This doesn't work and spits out:
% "Insufficient outputs from right hand side to satisfy comma separated
% list expansion on left hand side. Missing [] are the most likely cause."
Run Code Online (Sandbox Code Playgroud)
这有一个简单的语法吗?我想为这种简单的操作避免丑陋的循环.