2016-02-13 62 views
1

我需要你的幫助來實現C.如何在C中實現這個Matlab代碼?

RO =開方這個Matlab代碼((C1 C1)(C2 C2)(C3 * C3)。。。);

我知道。*是元素的元素。

有什麼想法?

謝謝。

+0

C是一個強***類型的語言。因此,與MATLAB不同,我們首先需要知道變量'c1','c2'和'c3'是什麼,以及相應的「。」是什麼。和「*」操作的意思。雖然如下所述 - 它們表示元素方式的乘法,但是它的實現將取決於相應的C類型 – davidhood2

+0

請您澄清'.'運算符的含義嗎?我明白'。*'意味着點/明的產品,但我並不知道'.'作爲運營商自己。 – Tacocat

+0

C1,C2,C3 - > 2048x1類型的矩陣:double。問題與複製粘貼。它是ro = sqrt((c1。* c1)。*(c2。* c2)。*(c3。* c3));對不起 – konova

回答

2

這可以通過使用for循環來完成元素乘法來解決。我在下面提供了一個非常簡單的解決方案,但你必須填充的C1C2C3自己

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 

int main(void) { 
    double C1, C2, C3[2048] = { 0 }; //Initialise arrays 
    double ro[2048] = { 0 }; 

    for (int i = 0; i < 2048; i++) { //Iterate through elementwise 

     ro[i] = sqrt(C1[i]^2 + C2[i]^2 + C3[i]^2); 

    } 
} 
0

謝謝您的建議內容。我只是改變+,但它是完美的。謝謝!

double C1[2048]={1,2,3,5,6,7,4,2,5}; 
double C2[2048]={1,6,3,5,6,2,4,1,6}; 
double C3[2048]={1,2,1,5,6,4,4,2,2}; 

int ro[2048] = { 0 }; 

for (int i = 0; i < 2048; i++) { 

    ro[i] = sqrt((C1[i]*C1[i]) * (C2[i]*C2[i]) * (C3[i]*C3[i])); 
} 
+1

要麼起作用,要麼本身乘法,要麼兩次冪。作爲參考,發佈此更新作爲您的問題的編輯,而不是重複的答案 – davidhood2