在f90代码中,有以下代码部分
dowhile: do while <conditions>
....
end do dowhile
我从来没有遇到过这样的循环,如果我省略了"dowhile . end dowhile“,而只使用了一个普通的"do while”循环,我就不明白会有什么区别。
有人能帮我澄清这一点吗?
如果我必须把这个循环转换成一个matlab,那么简单的matlab同时循环就足够了吗?
非常感谢
我需要z中的索引值与MATLAB中的索引值相同,我认为在Matlab中这意味着991在Python中为990。
原MATLAB代码(z = 991)
z = 1;
for i = 1:15
test_timer1 = 1;
for tester1 = 1:12
test_timer2 = 1;
for tester2 = 1:12
if test_timer2 > test_timer1
z = z+ 1;
end
我正在尝试将Fortran中的一种雨水循环计数算法转换成Matlab,这是我不熟悉的一种语言。
有一个现成的Rainflow,我已经下载了Matlab,但这不符合我的项目的要求,所以我试图从零开始构建一个。
以下是Fortran代码:
INTEGER BUFFER (4096), INDEX, VALUE, RANGE, MEAN, X, Y
INDEX = 0
10 CONTINUE
call 'get next peak/valley', VALUE
INDEX = INDEX + 1
BUFFER (INDEX) = VALUE
20 CONTINUE
正如我在Matlab中所了解的并行编程一样,我们可以精确地指定工作人员做什么;使用:
if labindex == x
%some computations
end
此外,我们还可以并行运行for循环;使用:
parfor i1 = x:y
%some computations
end
我使用的是一个有几个节点的集群,每个节点有8个核心。
我想运行两个函数,每个函数包含一个parfor循环,每个函数由一个工作人员执行,我的代码如下所示:
spmd
if labindex == 1
alpha = forward( some parameters );
在寻找MATLAB和Octave的代码片段时,我注意到函数以不同的方式结束,它们似乎都工作得很好。具体来说,我指的是驻留在其特定文件中的函数。
似乎用end来结束他们的功能。
function y = average(x)
y = sum(x)/length(x);
end
以endfunction结束其功能。
function retval = avg (v)
retval = sum (v) / length (v);
endfunction
但是,我的函数在函数的末尾没有任何关键字,工作非常好。
所以我的问题是,MATLAB/Octave函数定义的结尾有多严格。
我对matlab很陌生,但我知道如何处理循环和匿名函数。现在我想把这些结合起来。
我想写下:
sa = @(c) for i = 1:numel(biscs{c}), figure(i), imshow(biscs{c}{i}.Image), end;
但这是无效的,因为matlab似乎只想要换行符作为命令分隔符。我以清晰的方式编写的代码将是(没有函数头):
for i = 1:numel(biscs{c})
figure(i)
imshow(biscs{c}{i}.Image)
end
我在寻找一种解决方案,我可以像我的第一个示例一样,在一行中使用匿名函数编写它。如果我能以另
我有两个Matlab代码,我想确定一个矩阵是对称还是不对称?我使用了嵌套的"for循环“。此外:
在第一个代码中,我必须退出程序的两次“中断”。
在第二段代码中,我有命令“返回”以退出程序。
在休息和返回之间有什么问题吗?
我附上了我的密码。
第一个代码:
clc
clear all
A=input('Please enter your matrix=')
n=length(A);
temp=0;
for i=1:n-1
for j=i+1:n
if A(i,j)~=A(j,i)
temp=1;
break
对于某个数字,n,我必须找到下一个比n更大的数,它是素数。我不得不在Matlab中解决这个问题。下面是我的代码:
Solution1
function k = next_prime(n)
while n<10000000000
n=n+1;
if isprime(n)==true
k=n;
break
end
end
end
通过这种方式,问题得到了正确的解决,但我最初的解决方案是:
Solution2
function k = next_prime(n)
while n<10000000000
我刚开始使用Python,却无法真正掌握它的诀窍。
我用Matlab编写了代码,但很难用Python正确地隐藏它。
你能帮忙吗?
x=0;
for i=1:1000
x=x+(1/((((2*i)-1)^2)*(((2*i)+1^2))));
z=sqrt((x*16)+8);
error=abs(z-pi);
if (error < 10^-8)
i
break
end
end
谢谢
,我的问题是:如何在Matlab中执行类似于Haskell或Python的列表理解?要在Matlab中完成以下功能:
for xxx
if condition
expression1;
else
expression2;
end
end
,我最初的目标是利用矢量化的操作,减少代码中的for-循环,使其运行得更快。
编辑:我对答案的期待不是必要的,与数组相关的东西,矢量操作方法更受欢迎。
还有一个与这个问题相关的问题(通过名为“arrayfun”的函数)。Matlab中的匿名函数只缝1行,那么我如何在其中写if-if表达式
使用割线法计算函数根的matlab代码如下:
syms x
f=@(x) x.^2-2;
x0=1;
x1=5;
tol=0.01;
for i=1:100
if (f(x0)-f(x1)) < 0.00001
break;
end
xn = x0-((f(x0)*(x0-x1))/(f(x0)-f(x1)));
if abs(xn-x0) < tol*abs(xn)
break;
end
x0=xn;
x1=x0;
end
fprintf('the root is %g\n'
这是我第一次看到这样的语法:
// class Node
public class Node {
...
...
}
public class Otherclass { ... }
Otherclass graph = new Otherclass();
// getSuccessors is a method of Otherclass class
Node currentNode ;
List<Node> successors = graph.getSuccessors(currentNode);
// weird for loop
for (Node
我发现匿名函数非常有用,但很多时候我需要使用循环才能使函数工作。例如:
while val<tolerance
.....
end
我知道我可以将函数保存在一个单独的文件中,有时我可以向量化代码,然后匿名函数就可以工作了,但在某些情况下,很难找到for循环的替代方法。
Matlab文档没有讨论这一点,也没有说这是不可能的。有什么想法吗?
请编写一个Matlab函数来查找单词中的第一个元音,并使用您的名字作为输入测试程序。
函数头是function v = findfirstvowel (word)
我的工作是:
function v = findfirstvowel (word)
vow = 'aeiouAEIOU';
for i=1:size(word)
for j=1:10
if word(i)==vow(j)
v=word(i);
break;
end
end
下面有Matlab代码。变量"k“可以赋值1、2、3或'N‘。基于"k“的值,我需要执行后续的if语句。我认为Matlab不会执行下面的if语句并返回值k1=k2=0,但是它会做一些不同的事情。当我发出"whos“命令时,我看到Matlab生成的变量类型。你能帮我理解Matlab想做什么吗?否则,我如何比较/实现我正在努力做的事情?
Matlab代码
k = 'N'
k1=0;
k2=0;
if k >= 1
k1 = 1;
end
if k >= 2
k2 = 2;
end
k1
k2
Matlab输出
k =
我正在尝试用MATLAB来模拟车辆的运动。输出将显示在plot中。对于移动,我使用hgtransform函数。我需要同时运行这些for循环。请给我一个建议。我甚至对任何其他方法都持开放态度,通过这些方法,可以同时显示中两个点的移动。我需要点在一个单一的平原上的移动。
for t=linspace(0,1,100)
g.Matrix = makehgtform('translate',ptg2 + t*(ptg3-ptg2));
drawnow;
waitfor(r);
end
time = r.TotalElapsedTime;
fprintf(
我正在编写matlab中的以下代码:
m=unique(x);
for i=1:length(m)
%some code that increase the number of unique values in x
.......
.......
%here I tried to update m
m=unique(x);
end
虽然我已经通过在for end之前编写这一行m来更新m=unique(x);,但for循环的限制仍然具有相同的旧值。我需要动态更新for循环的限制。这有可能吗?如果可能的话,怎么做呢?
我在C# Visual Studio.I中有以下代码。我正在尝试通过COM服务器使用MATLAB绘制数据。我可以在某种程度上做到这一点,但是使用我拥有的代码,MATLAB输出控制台只显示变量"numbers“的最后一个值,并且当它绘制时,它会覆盖所有以前的值。另外,如何使可变大小动态变化?我的目标是实时绘制数据。任何建议都将不胜感激!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Thr
我知道解释器会逐行地将源代码翻译成机器代码,并在遇到错误时停止。
我想知道,当你给它做循环时,解释器会做什么?
例如,我有以下(MATLAB)代码:
for i = 1:10000
pi*pi
end
它真的运行并逐行10000次地翻译for循环行吗?
使用编译器的机器代码更短,只包含一组语句,其中包含一条用于10000次迭代的go to control语句。
我很抱歉,如果这没有意义,我不太了解编程的基础螺栓和螺母,但我想尽快理解。